ABSTRACT

There are two major methods of instrumenting an application: sampling and tracing. In sampling runs, the profiler samples the program counter every so often. The second approach is tracing, where the profiler actually modifies the executable and keeps track of all of the routines called, who they are called from, and how much time is used within each call. Sampling is preferred when the program being analyzed is very large with thousands of subroutines and functions. The first issue the reader must comprehend is that they are not measuring the performance of the application, they are measuring the operation of the application on an input problem. The second issue the reader must comprehend is that premature estimation of what part of the application should be optimized can be a great waste of time, and gathering statistics on the operation of the application on a particular problem is very easy.