We are essentially proposing permanent installation of monitoring equipment. System-specific hardware counters can be used when available. The next step is a Timer class, to accumulate time as directed by the programmer and controlled in cooperation with an interactive user. A report subclass is used for consistent information and visibility control. There are several levels of historical data maintained with runtime control.
Additional support is provided for user controls, periodic sampling and persistence of globals.
While elapsed real time is the final arbiter of performance, other measures should be easily incorporated, without changing the decisions about where to take measurements, or how to code them. Algorithm selection based on the current run, not on a reduced test case, or on previous full cases, or on unsubstantiated user claims about the data. This work on Performance Tools for Extended Use will address these issues. We also wish to make performance an integral part of program design, in the belief that a failure to do so is the main reason programs must be rewritten so often. We will work on both of these problems, using the ideas described above.