Before we can discuss how to improve performance, it's necessary to
define what performance is. This isn't as simple as it sounds-people
often mean very different things when they talk about performance.
There are several aspects of performance, each of which contribute to
the overall performance of an application.
Computers
fascinate people with their ability to carry out tasks with blinding
speed. When a computer, for whatever reason, doesn't perform a task
quickly, users are disappointed. Developers often use the terms "speed"
and "performance" interchangeably. However, to understand the different
types of problems that can be encountered, all of the different aspects
of performance must be considered:
- Computational performance
- RAM footprint
- Startup time
- Scalability
- Perceived performance
These
factors lay the foundation for a better understanding of the
performance landscape. Some aspects of performance are primarily
applicable to client-side systems, some to server-side systems, and
some to both. Understanding how each factor can contribute to the
performance characteristics of a system will help you analyze the
performance of your own applications.
1.1 Computational Performance
Computational
performance is what most people think about first when discussing
software performance. Computational performance concerns
characteristics such as
- How many instructions are required to execute a statement?
- How much overhead does a particular virtual method call incur?
- Should I use a quick-sort or a bubble-sort here?
Much
of the software performance literature centers on computational
performance. Obviously, which algorithms you use and how you implement
them are key factors in the overall performance of your software -
focuses on the selection and use of algorithms and data structures. It
turns out, however, that this is only part of the performance picture.
You need to consider factors beyond computational performance if you
want to produce truly high-performance software
Download