Hostname: page-component-586b7cd67f-t8hqh Total loading time: 0 Render date: 2024-12-07T08:56:19.935Z Has data issue: false hasContentIssue false

New dimensions in heap profiling

Published online by Cambridge University Press:  07 November 2008

Colin Runciman
Affiliation:
Department of Computer Science, University of York, Heslington, York, Y01 5DD, UK (e-mail: {colin,rojemo}@cs.york. ac.uk)
Niklas Röjemo
Affiliation:
Department of Computer Science, University of York, Heslington, York, Y01 5DD, UK (e-mail: {colin,rojemo}@cs.york. ac.uk)
Rights & Permissions [Opens in a new window]

Abstract

Core share and HTML view are not available for this content. However, as you have access to this content, a full PDF is available via the ‘Save PDF’ action button.

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.

Type
Articles
Copyright
Copyright © Cambridge University Press 1996

References

Clack, C., Clayman, S. and Parrott, D. (1995) Lexical profiling: theory and practice. J. Functional Programming, 5(2), 225277.CrossRefGoogle Scholar
Darlington, J. (1978) A synthesis of several sorting algorithms. Acta Informatica, 11, 130.CrossRefGoogle Scholar
Hartel, P. H. and Veen, A. H. (1988) Statistics on graph reduction of SASL programs. Software – Practice and Experience, 18(3), 239253.CrossRefGoogle Scholar
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.CrossRefGoogle Scholar
Peyton Jones, S. L. (1987) The Implementation of Functional Programming Languages. Prentice-Hall.Google Scholar
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.CrossRefGoogle Scholar
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.CrossRefGoogle Scholar
Runciman, C. and Wakeling, D. (1993a) Heap profiling of lazy functional programs. J. Functional Programming, 3(2), 217245.CrossRefGoogle Scholar
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.CrossRefGoogle Scholar
Röjemo, N. (1995a) Garbage collection, and memory efficiency, in lazy functional languages. PhD thesis, Department of Computer Sciences, Chalmers University of Technology, Sweden.Google Scholar
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.CrossRefGoogle Scholar
Sansom, P. M. 1994 (09). Execution profiling for non-strict functional languages. PhD thesis, Department of Computing Science, University of Glasgow.Google Scholar
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.Google Scholar
Schorr, H. and Waite, W. (1967) An efficient machine-independent procedure for garbage collection. Comm. ACM, 10(8), 501506.CrossRefGoogle Scholar
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.Google Scholar
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.Google Scholar
Wadler, P. (1990) Deforestation: transforming programs to eliminate trees. Theoretical Computer Science, 231248.Google Scholar
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.Google Scholar
Submit a response

Discussions

No Discussions have been published for this article.