Requirements for Performance Optimization

Only one requirement key is implemented in this iteration (see Table 10.1). Performance improvements can become quite complex, and despite ever-faster computers, performance issues can be observed in almost all types of programs. For example, in image-processing or database applications, in which a lot of data is accessed or processed, performance usually is a big constraint. So far, the implementation of the photo editor application has not been designed for performance but for convenience and fast development.

Table 10.1. Refined Requirement Description

Requirement

Type

Summary

P:editor_optimizations

Performance

The application shall be profiled to uncover possible bottlenecks. On the basis of the profiling results, we will decide upon improvements that are implemented in this iteration. The overall goal of this development cycle is to provide better interactivity and to improve the performance of the image-processing algorithms.

Usually it is a good practice not to consider performance constraints when you first implement a feature. This does not mean that you don't consider performance but rather that you implement the functionalities without spending too much time on performance. When you have developed a working product, you then analyze the whole system to identify any bottlenecks. This practice makes perfect sense because it is very difficult to predict the performance of various subsystems that work together at implementation time. In many cases, guesswork by developers or management turns out to be wrong anyway, in which case you have spent valuable time in improving the performance at the wrong spot.

The first step in making performance improvements is to identify the bottlenecks of the system. To do that, it is advisable to use a profiling tool. Even though people are often tempted to guess what the bottlenecks in a system are, just as often they are wrong. Using a profiling tool is therefore highly recommended and saves the embarrassment of fixing bottlenecks that are not actually the major performance problems at all.

Категории