2.1. Design aims of a profiler

As an important part of a programmer's artillery, a profiler should avoid getting in the way of the human analyst. This leads to a number of design parameters every profiler should aim towards :

Unobtrusive
A profiler should not require a significant expenditure of developer effort. The need for recompiles, preprocessors, special modifications to the toolchain and the like should be avoided, as they are inconvenient to the developer. An ideal solution should allow profiling at will, without needing such changes.
Accurate
The data and reports generated by the profiler system should aim towards accuracy. Inaccurate data runs the risk of mis-informing the developer of the true situation, leading to wasted effort and maintainability problems.
Complete
Profilers should aim towards a complete data set. If a system component or facet is not represented in the results, the developer may not be aware of its impact on the system as a whole.
General
Profilers should avoid special-purpose techniques where possible.
Fast
If the profiling method is too slow, it will impinge on the developer's hacking time. Slow profilers often can't be used in realistic environments, which makes collecting meaningful data hazardous and prone to error.