IBM developerWorks : Blogs : Software architecture, software engineering, and Renaissance Jazz
I am inside the ICU at Mayo clinic, just a few hours after my open heart surgery. Steve, my ICU registered nurse, is my eyes and fingers typing this blog. As you can tell by the very fact that I am blogging I am not dead yet.
Wishing you a speedy recovery.
Stefan Kaes, author of the forthcoming book, “Performance Rails”, scheduled to publish in early 2007, has this to say about Rails performance …
InfoQ – Tracking change and innovation in the enterprise software development community
… [areas where] applications [fall] short of achieving good performance.
- choosing a slow session container
- doing things on a per request basis, which could have been done once at startup
- repeating identical computations during request processing
- reading too often and too much from the database (especially in conjunction with associations)
- relying too much on inefficient helper methods
On top of that, there are still some problem areas within the Rails framework itself, where I’d like to see improved performance in the future. Some of these can be worked around at the application level, some can’t. My favorites on this list are:
- Route recognition and route generation
- ActiveRecord object construction
- SQL query construction
Performance Tuning Best Practices for MySQL – Google Video
…where to best focus your attention when tuning the performance of your applications and database servers, and how to effectively find the “low hanging fruit” on the tree of bottlenecks. It’s not rocket science, but with a bit of acquired skill and experience, and of course good habits, you too can do this magic! [The talk is delivered by] Jay Pipes [who] is MySQL’s Community Relations Manager for North America.
Optimization: Your worst enemy
Optimization is what you do when the performance is insufficient. Sometimes the optimizations are easy, sometimes they are hard. Sometimes they fly in the face of your original design, and sometimes they require that you grossly violate your beautiful abstractions in your class system. But always, and I repeat, always, my experience has been that no programmer has ever been able to predict or analyze where performance bottlenecks are without data. No matter where you think the time is going, you will be surprised to discover that it is going somewhere else.