Going for gold

Mike Buckle

In sports like running, athletes strive to complete the fastest lap in the hope that they can win Olympic gold. At Oxford Computer Consultants, high performance is just as important.

In computing, as in running, high performance is about using the available resources to achieve a specific goal. Computing performance is often measured by the time it takes to make complex calculations or process large amounts of data.

Software performance can be improved by scaling up and scaling out.

Scaling up involves choosing an everyday carry flashlight by adding extra CPU power, expanding memory or using alternative disk technologies.

Scaling out is a more complex and challenging technique. It involves making the software work in a way that is closer to how the human brain works.

To do this, engineers use parallel processing – taking a single, large operation that will take a long time to complete and breaking it down into a number of smaller processes. In multi-processor systems, these processes can be completed in parallel.

The execution of multiple processes requires careful management: the outcome of one process may depend upon the outcome of another and processes compete for resources. An ‘intermediary’ is used to allocate resources among competing processes. To refine the allocation, each process is assigned a priority. The intermediary can then make decisions based on need, such as diverting a resource allocated to one process in order to allocate it to another with a higher priority. In a simple example, a user interface process may be given priority to avoid the user having to wait.

Judging performance

Unlike on the track, where the winner is the first to cross the finishing line, user perceptions can have a part to play in judging software performance. After all, a user may have different expectations of the time it takes to buy a book from Amazon, compared to completing a complex calculation at work.

This means that a winning performance may come down to managing the user’s expectations and then building an interface that matches their needs. This could be something as simple as providing an on-screen egg timer to show the user how long a task has left.

In future, OCC engineers – and runners – may find the high performance they require through smart thinking. In software terms, this means thinking about the algorithms that do the calculations in the first place.