Visualizing the performance of higher-order programs
- 1 July 1998
- conference paper
- Published by Association for Computing Machinery (ACM)
- Vol. 33 (7) , 75-82
- https://doi.org/10.1145/277631.277646
Abstract
Profiling can provide the information needed to identify performance bottlenecks in a program, but the programmer must understand its relation to the program source in order to use this information. This is difficult due to the tremendous volume of data collected. Moreover, program transformations such as macro expansion and procedure inlining can obscure the relationship between the source and object code. Higher-order programs present additional challenges due to complex control flow and because they often consist of many small, often anonytnous, procedures whose individual performance properties may be less interesting than their characteristics as a group.To address these challenges we have implemented a profiler and interactive profile visualizer and integrated them into an optimizing Scheme compiler. The profiler instruments target code and maintains correlations with the original source despite compiler optimizations that can eliminate, duplicate, or move code. The visualizer operates as a source-code browser with features to examine execution counts and execution times from several perspectives. It supports the programmer in identifying program hot spots as well as code regions responsible for or affected by those hotspots. It also supports profile differencing which permits the programmer to study program behavior in different execution contexts.Our experience suggests that visualization tools can help to present raw profile data in a meaningful way. The tool can synthesize a high-level picture of program performance while still giving the programmer the ability to explore the details in interesting regions of code.Keywords
This publication has 7 references indexed in Scilit:
- Exploiting hardware performance counters with flow and context sensitive profilingPublished by Association for Computing Machinery (ACM) ,1997
- Formally based profiling for higher-order functional languagesACM Transactions on Programming Languages and Systems, 1997
- Catching bugs in the web of program invariantsPublished by Association for Computing Machinery (ACM) ,1996
- A practical and flexible flow analysis for higher-order languagesPublished by Association for Computing Machinery (ACM) ,1996
- Optimally profiling and tracing programsACM Transactions on Programming Languages and Systems, 1994
- Syntactic abstraction in schemeHigher-Order and Symbolic Computation, 1993
- GprofPublished by Association for Computing Machinery (ACM) ,1982