Skip to content
Haskell Optimization Handbook
⌘ K
Haskell Optimization Handbook

Table of Contents

  • 1. Preliminaries
    • 1.1. How to Use This Book
    • 1.2. Triage
    • 1.3. The Checklist
    • 1.4. The Programs of Consistent Lethargy
    • 1.5. Philosophies of Optimization
    • 1.6. The Golden Rules of Performance-Oriented Haskell
    • 1.7. Setting up a Reproducible Test Environment
    • 1.8. How To Debug
  • 2. Measurement, Profiling, and Observation
    • 2.1. Binary Profiling and Probing
    • 2.2. Thread Level Profiling
    • 2.3. Cmm Probes and Profiling
    • 2.4. Stg and RTS Probes and Profiling
    • 2.5. Core Probes and Profiling
    • 2.6. Haskell Level Probing and Profiling
  • 3. Optimizations
    • 3.1. GHC Flags
    • 3.2. GHC Optimizations
    • 3.3. Library Based Changes
    • 3.4. Library Agnostic Changes
  • 4. Case Studies
    • 4.1. Impact of Seq Removal on SBV’s Internal Cache
    • 4.2. SBV and the Bizarre GHC Regression
    • 4.3. Klister: A First Pass Performance Engineering
    • 4.4. Rearchitecting with Data-Oriented Design
  • Glossary
Haskell Optimization Handbook
/
2. Measurement, Profiling, and Observation
/
2.6. Haskell Level Probing and Profiling

2.6. Haskell Level Probing and Profiling¶

  • 2.6.1. GHC Flags
  • 2.6.2. Info-Table Profiling
  • 2.6.3. Eventlog
    • 2.6.3.1. Requirements
    • 2.6.3.2. Restrictions
    • 2.6.3.3. What Information Do I Receive From Eventlog?
    • 2.6.3.4. When should I use Eventlog
    • 2.6.3.5. The Running Example
    • 2.6.3.6. The Setup
    • 2.6.3.7. Visualizing the Heap: Eventlog by Type
    • 2.6.3.8. Adding Our Own Events
    • 2.6.3.9. Summary
    • 2.6.3.10. References and Further Reading
  • 2.6.4. Criterion, Gauge, and Tasty-Bench
  • 2.6.5. Flamegraphs
  • 2.6.6. Weigh
    • 2.6.6.1. Requirements
    • 2.6.6.2. Restrictions
    • 2.6.6.3. What Information Do I Receive From Weigh?
    • 2.6.6.4. When should I use Weigh
    • 2.6.6.5. How should I use Weigh
    • 2.6.6.6. Examples
    • 2.6.6.7. Summary
    • 2.6.6.8. References and Further Reading
    • 2.6.6.9. Related Work
  • 2.6.7. Inspection Testing
  • 2.6.8. Nothunks

© 2022-2026, Jeffrey Young (doyougnu) Built with Sphinx 8.2.3