Watch_me

You don’t have to accept slow Ruby or Rails performance. In this comprehensive guide to Ruby optimization, you’ll learn how to write faster Ruby code—but that’s just the beginning. See exactly what makes Ruby and Rails code slow, and how to fix it. Alex Dymo will guide you through perils of memory and CPU optimization, profiling, measuring, performance testing, garbage collection, and tuning. You’ll find that all those “hard” things aren’t so difficult after all, and your code will run orders of magnitude faster.

Buy Now

Select a DRM-free Format:

In Stock
Buy the eBook and get these DRM-free formats delivered immediately:
  • epub (for iPhone/iPad, Android, eReaders)
  • mobi (for Kindle)
  • PDF
We can automatically send them to your Kindle, and your Dropbox. (You'll need to log in to enable these options.)

This title is currently available in Beta. Buy the eBook now, and you'll be able to download successive releases of the eBook as the authors add material and correct mistakes. You'll get the final eBook when the book is finished.

You'll also be able to buy the paper book at a substantial discount when it's released (we're currently estimating 2015-11-10, but these dates can change).

 

About this Book

  • 170 pages (est)
  • Published:
  • Release: B1.0 (2015-03-23)
  • ISBN: 978-1-68050-069-1

This is the first book ever that consolidates all the Ruby performance optimization advice in one place. It’s your comprehensive guide to memory optimization, CPU optimization, garbage collector tuning, profiling, measurements, performance testing, and more.

You’ll go from performance rookie to expert. First, you’ll learn the best practices for writing Ruby code that’s easy not only on the CPU, but also on memory, and that doesn’t trigger the dreaded garbage collector. You’ll find out that garbage collection accounts for 80% of slowdowns, and often takes more than 50% of your program’s execution time. And you’ll discover the bottlenecks in Rails code and learn how selective attribute loading and preloading can mitigate the performance costs of ActiveRecord.

As you advance to Ruby performance expert, you’ll learn how to profile your code, how to make sense out of profiler reports, and how to make optimization decisions based on them. You’ll make sure slow code doesn’t creep back into your Rails application by writing performance tests, and you’ll learn the right way to benchmark Rails.

And finally, you’ll dive into the Ruby interpreter internals to really understand why garbage collection makes Ruby so slow, and how you can tune it up.

What You Need

Some version of Ruby. The advice from this book applies to all modern Ruby versions from 1.9 to 2.2. 80% of the material will also be useful for legacy Ruby 1.8 users, and there is 1.8-specific advice as well.

Contents and Extracts

This book is currently in beta, so the contents and extracts will change as the book is developed.

  • Preface
  • What Makes Ruby Code Fast excerpt
    • What Makes Ruby Code Slow
    • Optimize Memory
    • Get into the Performance Mindset
  • Fix Common Performance Problems
  • Make Rails Faster
    • Make ActiveRecord Faster
    • Make ActionView Faster
    • Takeaways
  • Profile
    • Measure with ruby-prof
    • Visualize with ruby-prof Printers
    • Visualize with KCachegrind (QCachegrind)
    • Takeaways
  • Learn to Optimize with the Profiler
    • Takeaways
  • Profile Memory
    • Detect Excessive Memory Usage
    • Profile Memory with Ruby-Prof
    • Measure Memory Yourself with GC#stat and GC::Profiler
    • Takeaways
  • Measure
  • Test Performance
    • Benchmark
    • Assert Performance
    • Report Slowdowns and Optimizations
    • Test Rails Application Performance
    • Takeaways
  • Think Out of the Box
  • Tune Up the Garbage Collector

About the Author

Alexander Dymo is an entrepreneur, YCombinator alum, free software developer, and book author. Alexander has built many applications with Ruby on Rails for his two startups and has spent long hours optimizing them. He regularly presents at Ruby, Rails, and Postgres conferences.