If you are like me, you probably have the impression that as time goes on, computers get more powerful, but you wait longer for them to react to your commands. There is something quite paradoxical in that your super Pentium Quad-Core with 8 GB of RAM takes 10 minutes to start up, whereas your old 80386 with Windows 3.1 started up almost instantaneously. Several factors have a direct impact on performance and knowing them can help you understand better.
Paradox
How can we explain that with increasingly powerful machines, we have the
impression that computers are always slower? Even though Moore’s Law (refer to the article
The
evolution of processors) correctly predicted the evolution in system performance, there is a
point about which it did not comment, which was that performance would always be expected and used
by programmers. Their ability to constantly imagine ever more complex solutions always required
greater processing capacity, and this would progress even faster than the performance of the
equipment.
In their defence, it must be said that this is usually translated by an exponential increase in the quality of software and their visual interfaces. Even though almost nobody uses it to its full capacity, nobody would want to abandon Excel now and return to the era of electronic spreadsheets for DOS (1).
Complexity
Let’s return to our example from the beginning, where we were comparing
the startup speed of an 80386 with Windows 3.1 and that of a QuadCore with Vista. Such comparison is
obviously very unfair, because the possibilities provided by modern operating systems have nothing
in common with what was available 20 years ago. Major improvements have been made to the user
interfaces, but also in the integration of various software programs and in automatic update
functions. Many programs now run permanently on each computer, just to ensure they function
correctly. For example, while I am writing this text, 86 separate processes are running on my
system. Some manage the display of my two screens, others make sure that no viruses are trying to
infect my system, one plays music and a number of others regularly check whether any updates should
be installed. All this is in addition to the main applications I started myself (word processing,
e-mail, spreadsheets, etc.).
Each of these programs is obviously designed to run in the most efficient manner possible, but at the end of the day, if the designer had to choose between better performance and an attractive function, he would very likely choose the latter, as marketing would require.
No software can avoid this race towards complexity. Long-term maestro* users know they cannot compare the most recent version with the one they were using 10 years ago. The trend is towards developing increasingly complex and integrated applications, that process constantly higher volumes of data, to meet increasingly stringent requirements. For example, in maestro*, project inquiry consisted of four tabs originally, but there are now 22. And despite all this, we are constantly told that something is missing!
Volume
The other important factor that influences a program’s performance is the
number of transactions it must process. When a program has to browse a database that contains
several million transactions before it can display the expected result, it would be unreasonable to
imagine that it can do this instantaneously. When designing software, this is one of the points that
is not always obvious from the outset, but that we realize with time. Users often invent new uses
for existing functions which results in an explosion in the amount of data generated. Fortunately,
it is usually possible to resolve these situations by restructuring the database, adding indexes or
deleting obsolete data. But we must be informed of these situations, because they are often only
observed by certain users.
Diagnosis
When you notice loss of performance on a specific system, one easy place to
check is the Windows Task Manager. To access it, press and hold the Ctrl, Alt and Del keys. This
tool can provide some interesting information, such as the list of processes that are currently
running on your system, and a graph that displays how your processor and memory are being used.
Pay attention to the values in red squares. If nothing is running on your workstation and this indicator shows an elevated value, some programs are probably running permanently and are consuming resources to the detriment of other applications (you can see the list in the Processes tab).
Check also how much memory is being used in relation to the total memory available. If the two figures are too close, the system probably has to transfer data to the disk. This is a very long process and will have a huge effect on performance.
Future
The race for complexity is not about to stop. Both on the hardware and software
side, each are inventing new methods to resolve the obstacles encountered. To overcome the physical
limitations of equipment, we are already talking about burning at 18 nm (2), tri-dimensional
smartcards and transmitting information by photons rather than by electrons. All of this will
inevitably require a significant increase in data processing performance. However, you can bet that
the pressures on software developers will result in them always requiring higher performance than
what the machines can provide.
Michel Fisette
References:
(1)
http://www.boingboing.net/2003/04/08/the-secret-history-o.html
(2)
http://www.tgdaily.com/content/view/42874/135/