small medium large xlarge

The latest version of the book is P1.0, released about 2 years ago. If you've bought a PDF of the book and would like to upgrade it to this version (for free), visit your home page.

By default this page displays the errata for the latest version of the book. If you have a previous version, select it here:

If you've found a new error, please submit it.

  • Typo
  • Tech. error
  • Suggestion
  • Maybe next edition
  • Not a problem
  • Reported in: P1.0 (20-Nov-16)
#80911
Paper page: 14
On printed page 14, in file chp2/wrapper.rb there are two invocations to GC.start as follows: GC.start GC.start(full_mark: true, immediate_sweep: ...more...
  • Reported in: P1.0 (15-Feb-16)
#79900
Paper page: 15
"Let's use the wrapper to run our unoptimized code example from the previous chapter" but then the sample code has nothing to do with the mentioned ex...more...
  • Reported in: P1.0 (07-Mar-17)
#81180
PDF page: 17
If you want to modify an array in place, you need only to modify each of its elements in place. data.each{|str|str.upcase!} When bench-marked,...more...
  • Reported in: P1.0 (12-Feb-16)
#79854
PDF page: 41-42
Command passes gc: :disable, but results show"gc":"enable" with a gc_count: 1. If GC is disabled, gc_count should be 0. =============== 2.2.0 :00...more...
  • Reported in: P1.0 (17-Dec-15)
#79345
PDF page: 54
The link to KCachegrind in the footnote seems to be to an old page. Since I can't include links in errata, all I can say is that the old page has a l...more...
  • Reported in: P1.0 (20-Dec-15)
#79374
PDF page: 55
Using ruby-prof version 0.15.9 (on Ruby 2.2.4p230), in order to get the final line of chp4/ruby_prof_example_api1.rb printing the result of the FlatPr...more...
  • Reported in: P1.0 (20-Jan-16)
#79670
PDF page: 55
ruby: 2.3.0 ruby-prof: 0.15.9 This line `printer.print(File.open("ruby_prof_example_api1_profile.txt", "w+"))` I needed to change it to: `Fi...more...
  • Reported in: P1.0 (20-Dec-15)
#79382
PDF page: 71
Call Graph rendering didn't work for me out of the box using QCacheGrind on Mac OSX, so I would suggest adding in some extra installation instructions...more...
  • Reported in: P1.0 (21-Dec-15)
#79386
PDF page: 74

class AppTest < MiniTest::Unit::TestCase

is now

class AppTest < MiniTest::Test

in Minitest 5.8.--Paul Fioravanti

  • Reported in: P1.0 (25-Jul-16)
#80556
Paper page: 80
The description of chp5/app_optimized3.rb is incorrect/misleading in that it includes Regexp#initialize calls. However, the Regexp's do not include a...more...
  • Reported in: P1.0 (06-May-16)
#80294
Paper page: 102
Page 101 lists GC Time(ms) as 0.755 in the GC profiler report, but page 102 says "the single collection pass took almost 800 ms", which is 1000 times ...more...
  • Reported in: P1.0 (25-Jul-16)
#80557
Paper page: 106
For the trick that works on Linux to clear the filesystem cache, use just echo instead of sudo echo. If you require passwords for sudo and don't supp...more...
  • Reported in: P1.0 (17-May-16)
#80328
PDF page: 116
Missing word between "to" and "the performance" in this fragment: "Should the test find a slowdown, we want to the performance before and after, an...more...
  • Reported in: P1.0 (20-Nov-16)
#80912
Paper page: 117
It seems somewhat strange that the methods which are meant to help readers establish their own peformance testing/benchmarking routines (specifically ...more...
  • Reported in: P1.0 (27-Jul-16)
#80561
Paper page: 160
When describing memsizes of objects, the book says that the extra byte for strings that can't be stored in the ruby object is for "upkeep". That is i...more...
  • Reported in: P1.0 (20-Mar-16)
#80122
Paper page: 161

Small typo. Instead of "Now that you how Ruby allocates, ..." should be "Now that you know how Ruby allocates..."--Steve Jemens