This article, by Sun's Bart Smaalders, describes ten common performance mistakes software developers make. One example:
During Solaris 10 development, Solaris engineers fixed a long list of performance problems across the kernel and user libraries. Toward the end of the release, [they] spent some time reviewing just what had been improved and by how muchand what was the underlying cause of the performance problem. Interestingly enough, all the really big improvements (above, say, 200 percent) resulted from changes in algorithms. Over and over again, all the other performance fixesusing specialized SIMD processor instructions such as SSE2 or VIS, inserting memory prefetch instructions, cycle shavingpaled in significance compared with simply going back and rethinking the locking algorithms and/or data structures.