Dion has called for a little restraint on performance comparisons between Rails and J2EE. I don't have any special place in my heart for either one, but restraint is certainly warranted, as there are four kinds of lies -- lies, damn lies, statstics, and benchmarks... A thorough and careful design, not any particular language and certainly not any particular framework, is the shortest path to elegance. (IMHO.)
On this subject, one study concluded that the most significant overall risk factor in a project is not using a particular methodology but rather using the wrong one. Knowing the right one requires luck, an experienced mentor, or proximity to a sufficient number of acknowledged, dissected failures.
Like most things, this brings to mind an anecdote, and this one is even relevant. Once upon a time (ages ago -- 2001), we needed to meet a performance benchmark (10x end-to-end transactions per eight hours) for a customer before we closed a license agreement. (They paid for the proof of concept and benchmark on their hardware, which is the fair thing to do.) We configured a dual-CPU test system on a cheap beater box with a fibre channel array built from pieces that we bought off eBay, some random FC cabling provider, and a liquidator who specialized in cheap FC drives. The total cost was something like $700. We used an empty PC case to hold the array with a paperclip to short the on/off jumper for the power supply. We sat down with a profiler (the final source of Truth when performance tuning) and tuned things to beat the required performance benchmark by a factor of two on our FrankenPC. Feeling good, we set everything up on a couple of the customer's HP N-class servers, and... the system fell short of the benchmark by a factor of three, i.e., it underperformed the gimpy PC by a factor of six.
So, what gives? Why would a couple of $70,000 server-class machines with a staff of trained professionals to take care of them be slower than a $700 FrankenPC? After a good number of possible causes were eliminated, it turned out that the disk array for the SAN that supported the two servers was configured in the worst possible way, and after that was corrected, the system sailed past the required performance mark as expected.
Add a comment.









