Main Content

Advanced Performance Optimization of Rails Applications

About the Talk

May 6, 2009 10:50 AM

Las Vegas, NV

Las Vegas, NV

In this session Alexander covers steps of performance improvement process necessary to make real-world production Rails application fast and keep it so.

To start, your application is slow. Make it faster:

optimizing common hotspots in Ruby code, including Date class, String::+=, BigDecimal comparisons and more preloading has_many/belongs_to associations when Rails eager loading can’t (custom joins and selects) optimizing template rendering, especially when including multiple small partials tips for faster PostgreSQL queries: manually pushing down conditions into subqueries, using arrays instead of joins and more performance characteristics of JRuby and Ruby 1.9

Two new plugins to make it faster faster:

Virtual Attributes AR plugin Template Inliner plugin

Your application is fast on development boxes, but is still slow in production. Some things to look into:

impact of filesystem performance shared database performance under severe memory restrictions debugging live production applications (strace, dtrace, oprofile) debugging performance problems caused by load-balancing solutions commonly used with Rails

Your application is fast on the server, but is still slow for the users. Optimizing in-browser performance:

HTTP optimization basics, managing browser cache optimizing JavaScript performance, efficient drag-and-drop IE-specific optimizations

Your application is fast. Here are the best practices and processes to keep it fast:

performance-aware coding and unit testing continuous performance integration testing memory profiling techniques for realistic database profiling production performance monitoring

Need to justify performance work to your boss? Alexander will use the data he gathered from production Rails application to demonstrate how quickly the performance degrades when you don’t care about it. You will understand that the continuous work on performance should be the integral part of your development and deployment process.

Ratings and Recommendations

This Talk hasn't been rated yet. Sign In to rate Talks.

comments powered by Disqus