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