Choosing an Effective Benchmark |
 |
To accurately verify whether or not your application is reaching
maximum performance levels, you will need to run some benchmarks.
An effective benchmark focuses on the critical functionality of
the application. What tasks does a typical end-user repeat most
often while using your application? Is the data used in the application
typical of the complexity of the data that your end users work with?
In addition, it is important that the benchmark does not spend
a lot of time in startup activities, but does spend enough time
on other tasks to give you an accurate understanding of performance
issues. Benchmark performance should scale on different systems
according to the published specifications. If it doesn't, your benchmark
is probably not spending enough time on the critical application
tasks, in this case, rendering graphics.
Finally, the benchmark results should be repeatable, with
approximately the same timing measurements for each time a given
task is run.
Identify the Bottlenecks |
 |
If the use of system resources is not balanced by the application,
performance can slow down considerably. Performance bottlenecks
can occur in many different places in your applications, including:
graphics, the CPU, memory, the network, and I/O systems. For example,
an application that does extensive mathematical computations on
data before displaying that data may be CPU-bound. In other words,
it will spend a long time processing data and using the CPU resources
before sending any information down for graphics processing, although
it might appear as if graphics is slow.
It is critical that you understand how the system resources
are being used before beginning to tune your code. Otherwise, the
time spent tuning code may have little impact on your overall application
performance. For example, if graphics is the bottleneck and you
are already getting maximum performance from the graphics hardware,
no amount of change to the interactions between the graphics and
your application will improve your application's performance. Similarly,
if the network is the bottleneck, no amount of graphics tuning will
improve application performance.