@@ -32,12 +32,12 @@ picking your favorite Haskell library and attempting to optimize that!
32
32
33
33
The book assumes you are using GHC |ghcVersion | and a Linux distribution (kernel
34
34
version ``5.8 `` and higher). Should you be using an older compiler than some
35
- sections, such as :ref: `Using EventLog
35
+ sections, such as :ref: `using EventLog
36
36
<EventLog Chapter>`; which arrived in ``GHC 8.8 ``
37
- may still be useful, while others such as :ref: `Using Cachegrind
37
+ may still be useful, while others such as :ref: `using Cachegrind
38
38
<Cachegrind Chapter>`; which relies on
39
39
:term: `DWARF ` symbols (added in ``GHC 8.10.x ``) may not be applicable.
40
- Similarly, some chapters, such as :ref: `Using perf
40
+ Similarly, some chapters, such as :ref: `using perf
41
41
<Perf Chapter>` will only be
42
42
applicable for Linux and Linux based operating systems.
43
43
@@ -61,21 +61,25 @@ Where to Begin
61
61
--------------
62
62
63
63
The book is structured into discrete independent parts to better serve as a
64
- handbook. Thus, the book is not meant to be read in a linear order. Instead, one
65
- should pick and choose which chapter to read next based on their needs because
66
- *the book assumes you have a problem that needs solving *.
67
-
68
- There are two parts: Part 1, focuses on measurement, profiling and observation
69
- of Haskell programs. This part is ordered from the bottom-up; it begins with
70
- tools and probes that are language agnostic and close to the machine, such as
71
- :ref: `Perf <Perf Chapter >` and :ref: `Cachegrind <Cachegrind Chapter >`, then
72
- proceeds through each `intermediate representation
64
+ handbook and is not meant to be read in a linear order. Instead, one should pick
65
+ and choose which chapter to read next based on their needs because *the book
66
+ assumes you have a problem that needs solving *.
67
+
68
+ The best place to start is :ref: `triage <Triage >`, this should help you
69
+ narrow down your next steps. If you are short on time, or just have a problem to
70
+ solve, then skip to the :ref: `checklist <The Checklist >`.
71
+
72
+ The book is roughly divided into two parts: Part 1, focuses on measurement,
73
+ profiling and observation of Haskell programs. This part is ordered from the
74
+ bottom-up; it begins with tools and probes that are language agnostic and close
75
+ to the machine, such as :ref: `perf <Perf Chapter >` and :ref: `cachegrind
76
+ <Cachegrind Chapter>`, then proceeds through each `intermediate representation
73
77
<https://en.wikipedia.org/wiki/Intermediate_representation#:~:text=An%20intermediate%20representation%20(IR)%20is,such%20as%20optimization%20and%20translation.> `_
74
78
(IR) describing the tools, probes, and information available at each IR.
75
79
76
80
Part 2, provides an ordered sequence of techniques to optimize code. It is
77
81
ordered from the easiest methods, such as choosing the right libraries; to the
78
- hardest and more invasive methods, such as exploiting :ref: `Backpack <Backpack
82
+ hardest and more invasive methods, such as exploiting :ref: `backpack <Backpack
79
83
Chapter>` for fine-grained :term: `Unboxed ` data types or exploiting
80
84
:term: `Levity Polymorphism ` to control the runtime representation of a data
81
85
type.
0 commit comments