Skip to main content Accessibility help
×
×
Home

New dimensions in heap profiling

  • Colin Runciman (a1) and Niklas Röjemo (a1)
Abstract

First-generation heap profilers for lazy functional languages have proved to be effective tools for locating some kinds of space faults, but in other cases they cannot provide sufficient information to solve the problem. This paper describes the design, implementation and use of a new profiler that goes beyond the two-dimensional ‘who produces what’ view of heap cells to provide information about their more dynamic and structural attributes. Specifically, the new profiler can distinguish between cells according to their eventual lifetime, or on the basis of the closure retainers by virtue of which they remain part of the live heap. A bootstrapping Haskell compiler (nhc) hosts the implementation: among examples of the profiler's use we include self-application to nhc. Another example is the original heap-profiling case study clausify, which now consumes even less memory and is much faster.

Copyright
References
Hide All
Clack, C., Clayman, S. and Parrott, D. (1995) Lexical profiling: theory and practice. J. Functional Programming, 5(2), 225277.
Darlington, J. (1978) A synthesis of several sorting algorithms. Acta Informatica, 11, 130.
Hartel, P. H. and Veen, A. H. (1988) Statistics on graph reduction of SASL programs. Software – Practice and Experience, 18(3), 239253.
Partain, W. (1993) The nofib benchmark suite of Haskell programs. In Launchbury, J. and Sansom, P., editors, Proc. 1992 Glasgow Workshop on Functional Programming, pp. 195202. Berlin: Springer–Verlag.
Peyton Jones, S. L. (1987) The Implementation of Functional Programming Languages. Prentice-Hall.
Ripley, G. D., Griswold, R. E. and Hanson, D. R. (1978) Performance of storage management in an implementation of SNOBOL4. IEEE Trans. Software Engineering, SE-4(2), 130137.
Runciman, C. and Wakeling, D. (1991) Problems and proposals for time and space profiling of functional programs. In Peyton Jones, S. L., Hutton, G. and Holst, C. K., editors, Proc. 1990 Glasgow Workshop on Functional Programming, pp. 237245. Berlin: Springer–Verlag.
Runciman, C. and Wakeling, D. (1993a) Heap profiling of lazy functional programs. J. Functional Programming, 3(2), 217245.
Runciman, C. and Wakeling, D. (1993b) Heap profiling of a lazy functional compiler. In Launchbury, J. and Sansom, P., editors, Proc. 1992 Glasgow Workshop on Functional Programming, pp. 203214. Berlin: Springer–Verlag.
Röjemo, N. (1995a) Garbage collection, and memory efficiency, in lazy functional languages. PhD thesis, Department of Computer Sciences, Chalmers University of Technology, Sweden.
Röjemo, N. (1995b) Highlights from nhc: a space-efficient Haskell compiler. In Proc. 7th Intl. Conf. on Functional Programming Languages and Computer Architecture, pp. 282292. New York:ACM Press.
Sansom, P. M. 1994 (09). Execution profiling for non-strict functional languages. PhD thesis, Department of Computing Science, University of Glasgow.
Sansom, P. M. and Peyton Jones, S. L. (1995) Time and space profiling for non-strict higher-order functional languages. In Proc. ACM Conf. on Principles of Programming Languages (POPL'95), pp. 355366.
Schorr, H. and Waite, W. (1967) An efficient machine-independent procedure for garbage collection. Comm. ACM, 10(8), 501506.
Sparud, J. (1993) Fixing some space leaks without a garbage collector. In Proc. 6th Int. Conf. on Functional Programming Languages and Computer Architecture (FPCA'93), pp. 117122. New York: ACM Press.
Stefanović, D. and Moss, J. E. B. (1994) Characterisation of object behaviour in Standard ML of New Jersey. In Proc. ACM Conf. on Lisp and Functional Programming, pp. 4354. New York: ACM Press.
Wadler, P. (1990) Deforestation: transforming programs to eliminate trees. Theoretical Computer Science, 231248.
Zhang, X., Webster, M. F., Sharp, J. A. and Grant, P. W. (1995) Computational fluid dynamics. In Runciman, C. and Wakeling, D., editors, Applications of Functional Programming, pp. 128158. London: UCL Press.
Recommend this journal

Email your librarian or administrator to recommend adding this journal to your organisation's collection.

Journal of Functional Programming
  • ISSN: 0956-7968
  • EISSN: 1469-7653
  • URL: /core/journals/journal-of-functional-programming
Please enter your name
Please enter a valid email address
Who would you like to send this to? *
×

Metrics

Full text views

Total number of HTML views: 0
Total number of PDF views: 0 *
Loading metrics...

Abstract views

Total abstract views: 0 *
Loading metrics...

* Views captured on Cambridge Core between <date>. This data will be updated every 24 hours.

Usage data cannot currently be displayed

New dimensions in heap profiling

  • Colin Runciman (a1) and Niklas Röjemo (a1)
Submit a response

Discussions

No Discussions have been published for this article.

×

Reply to: Submit a response


Your details


Conflicting interests

Do you have any conflicting interests? *