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.

Friday, April 7, 2006

cf.Objective() Presentations and Code

If you believe in the saying "better late than never," then here for the patient among you are my materials from cf.Objective() 2006. Enjoy!


Head First Mach-II (presented with Peter Farrell)





head_first_mach-ii_cfobjective.pdf
Download this file



OOP for Noobz





oop_for_n00bz.pdf
Download this file



 


Migrating Legacy Apps to OOP with ColdFusion





migrating_legacy_apps.pdf
Download this file



Comments


Matt,

I am picking apart your OOP for NOObz code examples, trying to wrap my mind around OOP.

I don't see anything in your examples that jumps out at me and says, "I'm the controller (as in MVC)."

Is the ooForm2.cfm or chooseForm.cfm acting as your controller (I thought controllers were supposed to be cfc's, but I'm a noob, what do I know)?

This example is helping me more than anything else - thanks a lot!



Hi Aaron--actually that specific example wasn't MVC. It was just designed as a gentle (hopefully) introduction to objects in general so it doesn't necessarily follow an MVC pattern. The goal with that example was to focus on the bean and data access objects in order for people to get a grasp on how objects work overall.

If you have any other questions feel free to ask!