Formally based profiling for higher-order functional languages
- 3 March 1997
- journal article
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Programming Languages and Systems
- Vol. 19 (2) , 334-385
- https://doi.org/10.1145/244795.244802
Abstract
We present the first source-level profiler for a compiled, nonstrict, higher-order, purely functional language capable of measuring time as well as space usage. Our profiler is implemented in a production-quality optimizing compiler for Haskell and can successfully profile large applications. A unique feature of our approach is that we give a formal specification of the attribution of execution costs to cost centers. This specification enables us to discuss our design decisions in a precise framework, prove properties about the attribution of costs, and examine to effects of different program transformations on the attribution of costs. Since it is not obvious how to map this specification onto a particular implementation, we also present an implementation-oriented operational semantics, and prove it equivalent to the specification.Keywords
This publication has 16 references indexed in Scilit:
- Deriving a lazy abstract machineJournal of Functional Programming, 1997
- New dimensions in heap profilingJournal of Functional Programming, 1996
- Lexical profiling: theory and practiceJournal of Functional Programming, 1995
- Heap profiling of lazy functional programsJournal of Functional Programming, 1993
- Report on the programming language HaskellACM SIGPLAN Notices, 1992
- Higher-order functions for parsingJournal of Functional Programming, 1992
- Implementing lazy functional languages on stock hardware: the Spineless Tagless G-machineJournal of Functional Programming, 1992
- The Chalmers Lazy-ML CompilerThe Computer Journal, 1989
- An execution profiler for modular programsSoftware: Practice and Experience, 1983
- An empirical study of FORTRAN programsSoftware: Practice and Experience, 1971