Friday, April 14, 2006

Framework Load Testing: Performance is One Aspect ...

Webapper just released an interesting summary of load testing the CFPetMarket in its various incarnations. (Go to cfpetmarket.com to download the different versions of the application.)

I don't think the results are all that surprising, so I won't belabor them here. What I do want to offer is a bit of my perspective on the issue of frameworks, CFCs, and performance in general.

First and foremost, remember that performance is one aspect of software development. Clearly our applications must have acceptable performance in order to be successful. What I'm afraid of is that people will look at these numbers and gravitate towards a "Fusebox is fast, Mach-II is slow" line of thinking. Mach-II is slower than Fusebox, but as the Webapper folks and Simon Horwith both point out, this is to be expected based on the CFC-heavy nature of Mach-II applications.

Note that I said Mach-II is slower than Fusebox, but that doesn't at all mean that Mach-II is slow. Performance is one aspect of software development, and if that was the only aspect of it, then we could all spend our time writing ultra-fast code that is unmanageable and perhaps even unreadable. We also have to maintain what we write, and this is where frameworks in general, and specifically Mach-II in my opinion, excel. That's not to say Fusebox isn't a great framework choice as well, I just think that for CFC-based development Mach-II is preferable. (I know, I'll probably get some contrary opinions on that, which is fine.)

The point I'm trying to make is that raw performance numbers aren't everything, and speed is relative. Think "fast enough," not just "fast," and always be mindful of the maintainability of your applications which in my opinion is FAR more important than raw speed. Maintenance is where all the money is spent, so as long as the application performs well (which Mach-II applications most certainly do) but is also easily maintainable, it will be a success over the long haul, not just in isolated load testing scenarios.

No comments: