Errata
The errata list is a list of errors and their corrections that were found after the product was released. If the error was corrected in a later version or reprint the date of the correction will be displayed in the column titled "Date Corrected".
The following errata were submitted by our customers and approved as valid errors by the author or editor.
Color key: Serious technical mistake Minor technical mistake Language or formatting error Typo Question Note Update
Version | Location | Description | Submitted By | Date submitted | Date corrected |
---|---|---|---|---|---|
Page xvi Acknowledgments section, 3rd paragraph |
Surname typo. It is "Juraj Michalak", should be "Juraj Michalek". |
Bartlomiej Plotka | Dec 06, 2022 | Jan 19, 2024 | |
Page Chapter 4 Assembly Section |
From reader (Victory) who found small bug: The command to get the assembly code for the Go code example `go tool objdump -s <binary>` is supposed to be `go tool objdump -S <binary>`. Note from the Author or Editor: |
Bartlomiej Płotka | Mar 23, 2023 | Jan 19, 2024 | |
Page Chapter 10 Summary (number 3) |
The third summary stated that there is small segment in the flame graph that is `ioutil.ReadFile`. I was analyzing the fgprof.pprof file, but that segment is not `ioutil.ReadFile` it is `os.ReadFile`. Note from the Author or Editor: |
Victory | Jul 13, 2023 | Jan 19, 2024 | |
Page Logging 11th paragraph. |
I see the word Structure logic, are you referring to Structured log? Note from the Author or Editor: |
Nao Yonashiro | Sep 28, 2023 | Jan 19, 2024 | |
Page p.93 1st line |
> That means approx 100 million unsigned 8-byte integers. Note from the Author or Editor: |
Anonymous | Oct 06, 2023 | Jan 19, 2024 | |
Page p.149 2nd paragraph |
> MOVQ <destination register> <address XYZ> Note from the Author or Editor: |
Anonymous | Oct 06, 2023 | Jan 19, 2024 | |
Page p.165 last paragraph, numberd list item 1 |
> ls -l /proc/$PID>/map_files Note from the Author or Editor: |
Anonymous | Oct 06, 2023 | Jan 19, 2024 | |
Page p.19 1st paragraph |
In this paragraph, you mentioned that the wasted memory size is 10 TB. However, it seems like there might be a typo in your calculation. 1MB * 100 times * 100 desktops, it would actually amount to about 10 GB, not 10 TB. Is that correct? Note from the Author or Editor: |
Anonymous | Oct 30, 2023 | Jan 19, 2024 | |
Page page 124 numbered list 1 |
> os.ReadFile and bytes.Split are short enough, so the compiler can copy the Note from the Author or Editor: |
Anonymous | Oct 31, 2023 | Jan 19, 2024 | |
Page Page 336 numbered list 4 |
> we create 110 files using methods... Note from the Author or Editor: |
Anonymous | Nov 01, 2023 | Jan 19, 2024 | |
Page page 401 example 10-9 |
The filenames in the prompt (v1.txt, v2.txt, v3.txt) do not match the output. Which one is correct? Note from the Author or Editor: |
Anonymous | Nov 02, 2023 | Jan 19, 2024 | |
Page Page 46 1st list item, end of description for go fmt |
> ... You can also install an extended official formatter. Note from the Author or Editor: |
Anonymous | Nov 05, 2023 | Jan 19, 2024 | |
Page Page 435 footnote 9 |
> Yes! If we don’t invoke the returned context.CancelContext function, ... Note from the Author or Editor: |
Anonymous | Nov 05, 2023 | Jan 19, 2024 | |
Page page 439 numbered list 1 |
> One doing net/http.(*persistConn).writeLoop Note from the Author or Editor: |
Anonymous | Nov 05, 2023 | Jan 19, 2024 | |
Page 52 at the very bottom |
In the numerous bullet point #1, it says: Note from the Author or Editor: |
Yoshi Yamaguchi | Jan 11, 2023 | Jan 19, 2024 | |
Page 61 first bullet point in #3 |
> Use the value receiver (no func (g Group) SomeMethod()) if your method does not modify the Group state. Note from the Author or Editor: |
Yoshi Yamaguchi | Jan 13, 2023 | Jan 19, 2024 | |
Page 66 2nd last paragraph |
> Make sure you try writing your own basic Go program, write a unit test, and use loops, switches, and concurrency mechanisms like channels and routines. Note from the Author or Editor: |
Yoshi Yamaguchi | Jan 14, 2023 | Jan 19, 2024 | |
Page 101 footnote #16 |
> This is a quite powerful thought. For example, imagine you have your application returning a result in 10 m. Reducing it to 1 m by optimizing on one level (e.g., an algorithm) is a game changer. Note from the Author or Editor: |
Yoshi Yamaguchi | Jan 18, 2023 | Jan 19, 2024 | |
Page 116 2nd paragraph |
> we have sixteen 64-bit general-purpose registers referred to as RAX, RBX, RDX, RBP, RSI, RDI, RSP, and R8-R15. Note from the Author or Editor: |
Yoshi Yamaguchi | May 08, 2023 | Jan 19, 2024 | |
Page 124 the first paragraph (bullet point) |
> -gcflags="-m=<number> builds the code while printing the main optimization decisions |
Yoshi Yamaguchi | Jan 22, 2023 | Jan 19, 2024 | |
Page 152 last paragraph (2nd bullet point) |
> Our Go program is executing slower than usual, while the memory usage is higher than average. Spoiler: our system might be under memory pressure causing trashing or swapping, as explained in “OS Memory Mapping” on page 168. Note from the Author or Editor: |
Yoshi Yamaguchi | May 09, 2023 | Jan 19, 2024 | |
Page 198 Definition of Push/Pull based system |
The title of the collection models have been swapped. The first one should be Pull and the second one Push Note from the Author or Editor: |
Ivo G. | May 25, 2023 | Jan 19, 2024 | |
Page 200 After bullet point 2 |
It should be doOperation instead of cooperation function Note from the Author or Editor: |
Anonymous | May 25, 2023 | Jan 19, 2024 | |
Page 228/229 Bullet points explaining Fig 6-8 & 6-9 do not match the figures |
E.g the third bullet point mentions a slow down at 17:50 UTC but the graphs are between 08:54 and 09:03 Note from the Author or Editor: |
Ivo | May 27, 2023 | Jan 19, 2024 | |
Page 245 numbered list 2 |
> Otherwise, in theory, it is Θ(1). Note from the Author or Editor: |
Anonymous | Nov 01, 2023 | Jan 19, 2024 | |
Page 256 2nd last paragraph |
> Optimizations and benchmarking routines, as it stands today, involve a lot of manual work from developers. We need to run experiments with different algorithms and code, while caring about reproducing production and performance nondeterminism. Due to the manual nature, this is prone to human error. Note from the Author or Editor: |
Yoshi Yamaguchi | May 09, 2023 | Jan 19, 2024 | |
Page 261 3rd paragraph |
> if we don’t have the data in the registers, the CPU has to fetch it from L-caches, which might take one nanosecond. If L-caches contain data the CPU needs, our single statement might take 50 ns. Note from the Author or Editor: |
Anonymous | Oct 11, 2023 | Jan 19, 2024 | |
Page 279 Bullet point 3 |
> This means it will execute our benchmark once with b.N that equals 1 m only to assess a single iteration duration. Note from the Author or Editor: |
Yoshi Yamaguchi | Feb 23, 2023 | Jan 19, 2024 | |
Page 294 2nd last paragraph |
> e.g., in the description of the pull report Note from the Author or Editor: |
Yoshi Yamaguchi | Feb 24, 2023 | Jan 19, 2024 | |
Page 296 2nd paragraph |
> If the initialization takes too much time and impacts your feedback loop, you can add the code that will cache test the input on the filesystem. Note from the Author or Editor: |
Yoshi Yamaguchi | May 09, 2023 | Jan 19, 2024 | |
Page 314 Last line before } in Example 8-20 snippet. |
The code line have: |
Bartłomiej Płotka | Nov 21, 2022 | Jan 19, 2024 | |
Page 326 Step 5. |
Step 5. contains “Then I benchmark again ( see step 5)… Note from the Author or Editor: |
Ivo | Jun 01, 2023 | Jan 19, 2024 | |
Page 336 numbered list 4 |
> Then we take a snapshot of this situation in the form of our fd.inuse profile. Note from the Author or Editor: |
Anonymous | Nov 01, 2023 | Jan 19, 2024 | |
Page 374 4th paragraph |
> even use the embedded `tool pprof` like a viewer to analyze them. Note from the Author or Editor: |
Yoshi Yamaguchi | Mar 07, 2023 | Jan 19, 2024 | |
Page 383 Optimizing Latency first parapgraph |
> … to achieve a throughput of at least 10 * N nanoseconds. The baseline results give us 50 * N nanoseconds. Note from the Author or Editor: |
Ivo | Jun 09, 2023 | Jan 19, 2024 | |
Page 399 enumerated bullet point 3 |
> e.g., we read ...\n12 and 34/n... in two different chunks. Note from the Author or Editor: |
Yoshi Yamaguchi | Apr 09, 2023 | Jan 19, 2024 | |
Page 399 numbered list 6 |
> we might read less than 10KB of bytes, so we need to process only n of them. We process all lines found in our 10 KB buffer in each loop iteration. Note from the Author or Editor: |
Anonymous | Nov 02, 2023 | Jan 19, 2024 | |
Page 406 enumerated bullet point 2 |
> Beware of common mistakes. The for _, line := range <-workCh would sometimes compile as well, and it looks logical, but it’s wrong. It will wait for the first message from the workCh channel and iterate over single bytes from the received byte slice. Instead, we want to iterate over messages. Note from the Author or Editor: |
Yoshi Yamaguchi | May 09, 2023 | Jan 19, 2024 | |
Page 407 3rd paragraph |
> We still don’t see the actual work, like parsing integers, since this work has outnumbered the overhead. Note from the Author or Editor: |
Yoshi Yamaguchi | May 09, 2023 | Jan 19, 2024 |