I hate to argue with people about performance. It's a waste of time. For me it's a solved problem:
First, I will implement the system with a good design so I can change it. Then, I will profile it to see if the performance is good. If not I can easily change it.
There's also some other argument about managed code (Java/.NET) performance vs. Native code performance. There is an ACM article that concludes the performance of the program is more dependent on programmer's ability than programming platform.
And as a software engineer you should know there are always other factors than performance: time, money …. If tuning performance prevents you from reaching other goals it’s not a wise plan to do it early (when you can do it late in the project when you know you need it).
Of course you should consider performance in architecture (like caching or other known patterns), but that’s another story.
I highly recommend chapter 25 of Code Complete 2nd edition (Code-Tuning Strategies) for a through discussion about performance tuning.
Jackson
—M. A. Jackson


