Improvements in Ruby's Garbage Collector Boost Performance by 8%
The article discusses two garbage collection improvements in Ruby that have made storefronts 8% faster. These improvements were discovered during the analysis and experimentation on Shopify's Storefront Renderer app, one of the highest traffic apps in the world. The first improvement is the addition of a new heuristic called REMEMBERED_WB_UNPROTECTED_OBJECTS_LIMIT_RATIO. This heuristic adjusts the upper limit of write barrier unprotected objects based on a ratio of the number of old objects, reducing major garbage collection cycles and improving performance. The second improvement is the introduction of a new environment variable, RUBY_GC_HEAP_REMEMBERED_WB_UNPROTECTED_OBJECTS_LIMIT_RATIO, which allows developers to adjust the ratio. These improvements will be released as part of Ruby 3.3 and are expected to bring similar performance enhancements to other apps. Developers can learn more about how Ruby's garbage collector works and the benefits of these improvements in the article.