Profiling, Performance, and Perfection

[This article originally appeared as a tutorial in the ACM SIGAPL APL89 Conference Proceedings.]

A PROFILE is ``a set of data often in graphic form portraying the significant features of something"}. Profiles can help us to quickly understand a person or entity better. In the development of computer-based applications, profiles are invaluable. They help us to understand the application -- how it works, how well it works, whether it in fact works as we think it does, and whether it is still working the same way it did last month.

For our purposes, profiling is the analysis of a running computer program in order to determine its actual, rather than predicted, behavior. Profiling may be performed manually, or automatically, with the aid of hardware or software. The data collected by a profiling activity depends on the type of analysis to be performed, but typically will allow determination of instruction mix, storage reference patterns, and instruction reference patterns.

This tutorial presents several tools for profiling of APL and non-APL languages and discusses their utility in improving the quality and performance of applications. As well, several case studies are presented, which are intended to provide some insight into how profiling tools might profitably be used in your own work.

The profiling article is available in PDF (102k) format and in PostScript (169k) format.