Working without a baseline. This practice is a close second in the perfor-
mance antipattern area. Without a baseline, it's impossible to tell what
progress is being made toward the goal.
Undisciplined choices for performance improvement. It's easy to work
into a cycle of making expensive, low-impact fixes. Ironically, some of
the best programmers fall into this trap.
Working on performance for too long. It's equally important to know
when to stop. Firm exit criteria will save time and money.
Solution: Use sound performance methodologies
With parallel architectures, solid performance-testing methodology is much
more important because so many variables are involved. Two investments for
high-volume applications are imperative: a strong performance-testing
methodology and an isolated performance environment. The methodology,
and the will to use it, allows efficient testing and rapid improvement, and con-
trols the performance-tuning expenses. It will also protect part of the testing
budget and schedule to ensure that stakeholders will be satisfied with the
application speed. With an isolated, stable environment, system performance
can be closely controlled and measured. In general, the steps shown next have
worked well for me.
Performance Enhancing Methodologies
I have used many performance methodologies in the past, and these rules represent
some of the most effective parts of each. Two keys to success are attention to frequent
measurements and repeatable steps after a good baseline, and a focus on items with
high reward/cost ratios.
Decide on the metrics for success. An often-overlooked key to success is
Set up the base environment, and stick to a code base. This is the base
environment. The process will measure the base; make single, con-
trolled modifications; and then measure the base again. This process is
repeated until success is achieved. Sometimes, it's cheaper to rent the
equipment and lab space than to build a specialized lab. That option is
perfectly acceptable as long as the testing conditions are at least as
stringent as the production conditions.
Take a snapshot of the controlled environment. For the environment to
be a valid baseline, it must be completely repeatable, from configura-
tion files to database data.