Performance
by Design
This
chapter has outlined a number of different places in the design process that
impact performance. One way of visualizing this is to realize that there is a
maximum possible performance for a given combination of system and problem to
be solved. The choices made during design and implementation will either lead
to the system meeting this maximum upper bound or cause the performance to be
below this.
Decisions
made early in the design process potentially have the largest impact on the
performance of the application. The choice of algorithm can completely change
the way the application behaves as the size of the problem increases. Similarly,
a poor choice of algorithm can limit the scaling of the application as the
number of available cores increases.
In many
cases, it is possible to write the application in such a way as to encapsulate
the choice of algorithm for critical parts of the code so that if it becomes
critical to per-formance, it can be replaced at a later point. With careful
consideration, the code can be structured so that the compiler can optimize
away any inefficiencies introduced by this encapsulation.
With all
design processes, it is usually easy to make significant changes early in the
design process rather than later. Change introduced earlier takes less effort
to implement and is cheaper than late-introduced fixes. Hence, early
consideration given to appropriate workloads and use cases will lead to better
choices during design and implementation.
All too
often, performance tuning is considered at the point just before the
applica-tion ships or at the point that it becomes obvious that the application
is too slow. At this stage, it can be hard, and costly, to make the changes
that are necessary to improve per-formance. Figure 2.18 shows the traditional
view of the impact of change over the development cycle of an application.
Some
program modifications are relatively easy to do at the end of the development
cycle, such as changing the compiler flags, but the impact is likely to be
small. Other actions, such as implementing a new algorithm, will have much
higher costs if per-formed at the end of the project but could have a much
greater impact. Ideally, such high-impact work should be completed early where
it incurs less cost.
Related Topics
Privacy Policy, Terms and Conditions, DMCA Policy and Compliant
Copyright © 2018-2024 BrainKart.com; All Rights Reserved. Developed by Therithal info, Chennai.