Chapter 9. Essential Tools for Performance Tuning
To be able to improve the performance of your system you need a prior
understanding of what can be improved, how it can be improved, how
much it can be improved, and, most importantly, what impact the
improvement will have on the overall performance of your system. You
need to be able to identify those things that, after you have done
your best to improve them, will yield substantial benefits for the
overall system performance. Concentrate your efforts on them, and
avoid wasting time on improvements that give little overall gain.
If you have a small application it may be possible to detect places
that could be improved simply by inspecting the code. On the other
hand, if you have a large application, or many applications,
it's usually impossible to do the detective work
with the naked eye. You need observation instruments and measurement
tools. These belong to the benchmarking and code-profiling
categories.
It's important to understand that in the majority of
the benchmarking tests
that we will execute, we will not be looking at absolute results. Few
machines will have exactly the same hardware and software setup, so
this kind of comparison would usually be misleading, and in most
cases we will be trying to show which coding approach is preferable,
so the hardware is almost irrelevant.
Rather than looking at absolute results, we will be looking at the
differences between two or more result sets run on the same machine.
This is what you should do; you shouldn't try to
compare the absolute results collected here with the results of those
same benchmarks on your own machines.
In this chapter we will present a few existing tools that are widely
used; we will apply them to example code snippets to show you how
performance can be measured, monitored, and improved; and we will
give you an idea of how you can develop your own tools.
|