Chapter 3. Profile and Benchmark to Your Heart's Content
So far we haven't used much else but heap usage statistics to gauge the performance of Haskell programs. For a quick overview of the overall performance of a program, a simple +RTS -s is often sufficient. However, often it is necessary to know which parts of the code specifically are taking up the most time and space.
In this chapter we extend our toolset with more sophisticated profiling and benchmarking facilities. We will learn to inspect and set cost centres, to benchmark robustly when semantics are mostly lazy. Finally we'll also look at monitoring performance while the program is still running.
- Profiling time, allocation and space usage
- Profiling the heap: break-downs and subset selection
- Benchmarking Haskell programs with the criterion library
- Monitoring still-executing programs in real-time with
ekg