A curated list of awesome Ruby Performance books, courses, trainings, conference talks, blogs and most inspiring open source contributors. To get even more insights about performance you can take a look at wiki pages, they are work in progress now, but expect them to have more info.
- Awesome Ruby Performance
- Contributions
- Books
- Video Courses
- On-Site Trainings
- Upcoming conferences
- Conference Talks
- Blogs
- Inspiring Open Source Contributors
- Performance tools
- High Performance Libraries
- Benchmarks
- Article series
- Official Ruby bugtracker notes
- Interesting performance talks not about Ruby
Have you ever seen an interesting talk about Ruby performance and it's not listed here? Send a pull request. Have you ever read an interesting article about Ruby performance and it's not listed here? Send a pull request. Did you write an article? Send a pull request. Know interesting blogger, who writes about Ruby performance? You know what to do!
Do not forget to include a language remark: 🇯🇵 🇰🇷 🇩🇪 🇨🇳 🇺🇸 🇫🇷 🇪🇸 🇮🇹 🇷🇺 🇬🇧
- Ruby Performance Optimization by Alexander Dymo 🇺🇸
- Ruby Under a Microscope by Pat Shaughnessy 🇺🇸
- TODO
- TODO
- TODO
Sorted from newest to oldest:
- 2019
- Ruby CPU and Memory - Pareto principle by Юлиан Покровский (Oct 27, 2019, RubyRussia) 🇷🇺
- 2015
- On Memory by John Crepezzi (Mar 30, 2015, MountainWest RubyConf) 🇺🇸
- Older
- TODO
- SpeedShop 🇺🇸
- Benchmarking
- benchmark-ips - Provides iteration per second benchmarking for Ruby.
- Profiling
- Rack
- Derailed Benchmarks - A series of things you can use to benchmark a Rails or Ruby app.
- rack-mini-profiler - Profiler for your development and production Ruby rack apps.
- Pure Ruby
- batch-loader – A generic lazy batching mechanism to avoid N+1 DB queries, HTTP queries, etc.
- bullet - Help to kill N+1 queries and unused eager loading.
- Peek - Visual status bar showing Rails performance.
- stackprof - a sampling call-stack profiler for ruby 2.1+
- Rbkit - profiler for Ruby. With a GUI.
- rbspy - Sampling profiler for any Ruby process.
- ruby-prof - A code profiler for MRI rubies.
- speedscope - A fast, interactive web-based viewer for performance profiles. An alternative viewer for FlameGraphs. Will happily display multi-megabyte profiles without crashing your browser.
- Rack
- Linters, recommendation tools (possibly runnable on CI)
- fasterer - Don't make your Rubies go fast. Make them go fasterer
- New_Relic
- SkyLight - smart profiler for Ruby and Rails applications
- Booting code
- bootsnap - Boot large Ruby/Rails apps faster.
- C/Rust extensions
- fast_blank - Provides a C-optimized method for determining if a string is blank.
- yajl-ruby - A streaming JSON parsing and encoding library for Ruby (C bindings to yajl).
- oj - A fast JSON parser and Object marshaller as a Ruby gem.
- Memory
- nakayoshi_fork - solves CoW friendly problem on MRI 2.2 and later
- The Art of Benchmarking by Matt Warren
- TODO
- Как я провёл две недели в поисках утечки памяти by Олег Дашевский. "Это история о поисках утечки памяти. Она довольно длинная, потому что я привожу массу подробностей. Почему я решил описать свои приключения? Дело не только в практическом стремлении сохранить все мелкие скрипты и куски кода. Мне на минуточку показалось, что это и есть UNIX way – то, что меня вело. Каждый шаг был связан с очередной небольшой утилитой или библиотекой, которая хорошо решает свою задачу. И я в итоге достиг успеха." 🇷🇺
- How I spent two weeks hunting a memory leak in Ruby by Oleg Dashevskii. "This is a story about hunting a memory leak. A long story, because I go into much detail. Why describe my adventures? Not that I wanted to save all those tiny code pieces and scripts only. It rather occurred to me that it was UNIX way which I had pursued. Every step was related to yet another small utility, or a library, which solves its task well. And finally I succeeded." 🇺🇸
- TODO
- TODO
- Debugging hidden memory leaks in Ruby - "This article covers tools and tricks you can use to attack leaks that you can not easily introspect in Ruby. In particular I will discuss mwrap, heaptrack, iseq_collector and chap." by Sam Saffron (2019-10-15) 🇺🇸
- What causes Ruby memory to bloat - How memory allocation works in Ruby and how to improve it with malloc_trim API. 🇺🇸
- The Definitive Guide to Ruby Heap Dumps, Part I - “When you can’t reproduce memory bloat, here’s how to work with a heap dump.” by Richard Schneeman (Last updated: 2017-06-19) 🇺🇸
- The Definitive Guide to Ruby Heap Dumps, Part II- “When you can’t reproduce memory bloat, here’s how to work with a heap dump.” by Richard Schneeman (Last updated: 2017-06-19) 🇺🇸
- TODO
- TODO
- 2019
- Introduce malloc_trim(0) in full gc cycles - Per Hongli's excellent article it looks like malloc_trim can help tremendously with memory bloat issues. 🇺🇸
- 2018
- set M_ARENA_MAX for glibc malloc - Not everybody benefits from jemalloc and the extra download+install time is not always worth it. Lets make the user experience for glibc malloc users better, too. 🇺🇸
- Use jemalloc by default? 🇺🇸
- Emery Berger 🇺🇸
- Carl Cook 🇺🇸
- Brendan Gregg blog 🇺🇸