Profiling refers to the process of collecting statistical event data at runtime
and performing data aggregation and filtration when the program terminates. In
tracing, however, events are often time-stamped or at least ordered with respect
to program execution. This enables the user to see exactly when and what
occurred. Tracing is able to provide a more accurate view of the program
behavior. However, with a long running program, tracing requires an enormous
amount of storage space and because of this it can also complicate the analysis
process.
| Item |
Importance rating |
| The ability to provide a best case performance time based on the current system |
|
| The cost of the tool |
|
| The ease of installation |
|
| Support for a wide variety of platforms |
|
| Support for a heterogeneous environment |
|
| How easy it is to learn to use the tool |
|
| The ability to provide hardware counter information |
|
| The ability to provide automatic instrumentation (i.e. the tool automatically inserts function calls for the user) |
|
| The ability to provide profiling support |
|
| The ability to provide tracing support |
|
| Multiple analyses/views (i.e. multiple ways to analyze/view the data) |
|
| The ability to interoperate with other tools |
|
| The ability to filter and aggregate (i.e. summarize) data |
|
| The ability to correlate performance data back to the source code |
|
| The ability to identify performance bottlenecks |
|
| Documentation quality |
|
| Technical support |
|
| Stability (i.e. how often the tool crashes) |
|
| The ability to search through the data |
|