Results 1 -
5 of
5
Understanding Memory Allocation of Scheme Programs
, 2000
"... Memory is the performance bottleneck of modern architectures. Keeping memory consumption as low as possible enables fast and unobtrusive applications. But it is not easy to estimate the memory use of programs implemented in functional languages, due to both the complex translations of some high leve ..."
Abstract
-
Cited by 10 (1 self)
- Add to MetaCart
Memory is the performance bottleneck of modern architectures. Keeping memory consumption as low as possible enables fast and unobtrusive applications. But it is not easy to estimate the memory use of programs implemented in functional languages, due to both the complex translations of some high level constructs, and the use of automatic memory managers. To help understand memory allocation behavior of Scheme programs, we have designed two complementary tools. The first one reports on frequency of allocation, heap configurations and on memory reclamation. The second tracks down memory leaks. We have applied these tools to our Scheme compiler, the largest Scheme program we have been developing. This has allowed us to drastically reduce the amount of memory consumed during its bootstrap process, without requiring much development time. Development tools will be neglected unless they are both conveniently accessible and easy to use. In order to avoid this pitfall, we have carefully de...
Space Profiling for Parallel Functional Programs
"... This paper presents a semantic space profiler for parallel functional programs. Building on previous work in sequential profiling, our tools help programmers to relate runtime resource use back to program source code. Unlike many profiling tools, our profiler is based on a cost semantics. This provi ..."
Abstract
-
Cited by 9 (2 self)
- Add to MetaCart
This paper presents a semantic space profiler for parallel functional programs. Building on previous work in sequential profiling, our tools help programmers to relate runtime resource use back to program source code. Unlike many profiling tools, our profiler is based on a cost semantics. This provides a means to reason about performance without requiring a detailed understanding of the compiler or runtime system. It also provides a specification for language implementers. This is critical in that it enables us to separate cleanly the performance of the application from that of the language implementation. Some aspects of the implementation can have significant effects on performance. Our cost semantics enables programmers to understand the impact of different scheduling policies yet abstracts away from many of the details of their implementations. We show applications where the choice of scheduling policy has asymptotic effects on space use. We explain these use patterns through a demonstration of our tools. We also validate our methodology by observing similar performance in our implementation of a parallel extension of Standard ML.
Heap Profiling of a Lazy Functional Compiler
- Proc. 1992 Glasgow Workshop on Functional Programming
, 1992
"... This paper reports on the experimental application of heap profiling to Augustsson and Johnsson's Lazy ML (LML) compiler [1]. Since our implementation of heap profiling is itself based on the LML compiler, this amounts to a boot-strapping exercise. The LML compiler extends to some 16,500 lines of co ..."
Abstract
-
Cited by 7 (4 self)
- Add to MetaCart
This paper reports on the experimental application of heap profiling to Augustsson and Johnsson's Lazy ML (LML) compiler [1]. Since our implementation of heap profiling is itself based on the LML compiler, this amounts to a boot-strapping exercise. The LML compiler extends to some 16,500 lines of code in almost 200 modules, and is by any standard a large and sophisticated piece of software. As it has been developed over a period of almost a decade, with each successive version outperforming its predecessor, the sort of dramatic improvement obtained for the clausify program is hardly to be expected; but
The gnutella homepage: http://gnutella.wego.com
- DCI FEI TU Košice
"... An execution profiling attempts to provide feedback by reporting to the programmer information about inefficiencies within the program. Instead of writing whole code highly optimized, the programmer can initially write simple, maintainable code without much concern for efficiency. Profiling is an ef ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
An execution profiling attempts to provide feedback by reporting to the programmer information about inefficiencies within the program. Instead of writing whole code highly optimized, the programmer can initially write simple, maintainable code without much concern for efficiency. Profiling is an effective tool for finding hot spots in a program or sections of code that consumes most of the computing time and space. The paper presents already implemented execution profiler for process functional program. From the viewpoint of implementation, process functional language is between an impure eager functional language and a monadic lazy pure functional language. The key problem of execution profiling is to relate gathered information about an execution of the program back to the source code in well-defined manner. The paper defines language constructs for monitoring resource utilization during the program execution. In our solution programmer can associate label with each expression in a program. All resources used during the evaluation of a labeled expression are mapped to the specified label. The paper is concerned with creating of inheritance profiles. Inheritance profile can reduce the time spent with program profiling. Research results are presented on sample program illustrating different types of time and space profiles generated by already implemented profiler for process functional programs.
Václavík: Time and Memory Profile of a Process Functional Program
- Acta Polytechnica Hungarica
"... Abstract: An execution profiling attempts to provide feedback by reporting to the programmer information about inefficiencies within the program Instead of writing whole code highly optimized, the programmer can initially write simple maintainable code without much concern for efficiency. Profiling ..."
Abstract
-
Cited by 1 (1 self)
- Add to MetaCart
Abstract: An execution profiling attempts to provide feedback by reporting to the programmer information about inefficiencies within the program Instead of writing whole code highly optimized, the programmer can initially write simple maintainable code without much concern for efficiency. Profiling is an effective tool for finding hot spots in a program or sections of code that consumes most of the computing time and space. The paper presents already implemented execution profiler for process functional program. From the viewpoint of implementation, process functional language is between an impure eager functional language and a monadic lazy pure functional language. The key problem of execution profiling is to relate gathered information about an execution of the program back to the source code in well defined manner. The paper defines language constructs for monitoring resource utilization during the program execution. In our solution programmer can associate label with each expression in a program. All resources used during the evaluation of a labeled expression are mapped to the specified label. The paper is concerned with formal profiling model. Research results are presented on sample program illustrating different types of time and space profiles generated by already implemented profiler for process functional programs.

