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
/
Index

Index

A

  • Algebraic Data Type
  • Arity

C

  • CAF
  • Cardinality Analysis
  • Closure
  • Closure Conversion
  • Compound Types

Debugging

  • Reproducer
  • Shotgun Debugging

E

  • Entry Code

Format

  • DWARF

GHC

  • Occurrence Name

K

  • Known Function

Levity

  • Boxed
  • Lifted
  • Unboxed
  • Unlifted

L

  • Levity Polymorphism
  • Loop Fusion

Memory

  • Pinned

M

  • Multi-Shot Lambda

Normal Forms

  • HNF
  • NF
  • WHNF

O

  • One-Shot Lambda

Optimization

  • Full Laziness transformation
  • Fusion
  • Join Point
  • Let Floating

P

  • PAP

Runtime

  • Info Table
  • Info Table Address
  • SRT

Scope

  • Top-Level

S

  • Sharing

T

  • Thread State Object (TSO)
  • Thunk

Type

  • Atomic

U

  • Unfolding
  • Unknown function
ACDebuggingEFormatGHCKLevityLMemoryMNormal FormsOOptimizationPRuntimeScopeSTTypeU

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