Si vous êtes comme moi, vous avez probablement l’impression que plus le temps passe, plus la puissance des ordinateurs augmente et plus vous attendez longtemps pour que celui-ci réagisse à vos commandes. N’y a-t-il pas quelque chose de paradoxal à ce que votre super Pentium Quad-Core avec 8 gigs de RAM prenne 10 minutes à se mettre en marche, alors que votre vieux 80386 fonctionnant avec Windows 3.1 démarrait presque instantanément? Plusieurs facteurs ont un impact direct sur la performance et les connaître peut aider à mieux comprendre.
Paradoxe
Comment expliquer qu’avec des machines toujours plus puissantes, on ait
l’impression que les ordinateurs sont toujours plus lents? Même si la loi de Moore (voir
l’article
L’évolution
des processeurs) a prévu correctement l’évolution de la puissance des
machines, il est un point sur lequel elle ne disait mot, à savoir que cette puissance serait
toujours anticipée et utilisée par les programmeurs et que la capacité de
ceux-ci d’imaginer des solutions toujours plus complexes, donc nécessitant une
capacité de traitement toujours plus grande, progresserait encore plus rapidement que la
puissance de l’équipement.
Pour leur défense, il faut dire que cela s’est en général traduit par une augmentation exponentielle de la qualité des logiciels et de leurs interfaces visuelles. Même si à peu près personne ne l’utilise à sa pleine capacité, personne ne voudrait aujourd’hui abandonner Excel et retourner à l’époque des tableurs électroniques pour DOS (1).
Complexité
Revenons à notre exemple du début, où on comparait
la vitesse de démarrage d’un 80386 sous Windows 3.1 et celle d’un QuadCore avec
Vista. Une telle comparaison est évidemment très injuste, car les possibilités
offertes par les systèmes d’exploitation modernes n’ont rien à voir avec
ce qu’on avait à notre disposition il y a 20 ans. Des améliorations majeures ont
été apportées aux interfaces usager, mais aussi dans l’intégration
des différents logiciels entre eux ainsi que dans les fonctionnalités de mises
à niveau automatique. Plusieurs programmes roulent désormais en permanence sur chaque
ordinateur, juste pour s’assurer que celui-ci fonctionne correctement. Par exemple, au moment
où j’écris ce texte, 86 processus distincts tournent sur mon poste. Certains
gèrent l’affichage sur mes deux écrans, d’autres s’assurent
qu’aucun virus n’essaie de m’infecter, l’un d’eux me fournit de la
musique et plusieurs vérifient régulièrement s’il ne serait pas temps
d’installer une correction sur d’autres programmes. Tout cela en plus des applications
principales que j’ai démarrées moi-même (traitement de texte, courriels,
tableur, etc.)
Chacun de ces programmes a évidemment été conçu pour s’exécuter de la manière la plus efficace possible, mais en bout de ligne, si le concepteur a eu à choisir entre une meilleure performance et une fonctionnalité « accrocheuse », il est probable qu’il a privilégié cette dernière, marketing oblige.
Aucun logiciel n’échappe à cette course vers la complexité. Les utilisateurs de longue date de maestro* savent qu’ils ne peuvent comparer la version la plus récente avec celle qu’ils utilisaient il y a 10 ans. La tendance est au développement d’applications de plus en plus complexes et de plus en plus intégrées, qui traitent des volumes de données toujours plus élevés, de façon à répondre à des besoins toujours plus pointus. Par exemple, dans maestro*, la consultation des projets contenait 4 onglets à l’origine, alors qu’elle en compte maintenant 22. Et malgré cela, on nous dit encore régulièrement qu’il y manque quelque chose!
Volume
L’autre facteur important qui influe sur la performance d’un programme
provient du volume de transactions qu’il faut traiter. Quand un programme doit parcourir une
base de données contenant plusieurs millions de transactions avant de pouvoir
présenter le résultat escompté, il serait utopique d’imaginer qu’il
puisse le faire instantanément. Dans la conception d’un logiciel, c’est
l’un des points qui n’est parfois pas évident au départ, mais dont on se
rend compte avec le temps. Il arrive fréquemment que les utilisateurs inventent de nouveaux
usages aux fonctions présentes, ce qui entraine l’explosion du volume de données
générées. Heureusement, il est habituellement possible de remédier
à ces situations, en restructurant la base de données, en ajoutant des index ou
supprimant des données obsolètes. Mais il importe que nous soyons mis au courant de
ces situations, car elles n’apparaissent souvent que chez certains utilisateurs.
Diagnostic
Lorsque vous constatez une perte de performance sur un poste particulier,
l’une des choses faciles à vérifier se trouve dans le gestionnaire de
tâches de Windows. Pour y accéder, vous devez enfoncer simultanément les touches
Ctrl + Alt + Suppr. Cet outil peut vous fournir plusieurs informations intéressantes, telles
que la liste des processus qui sont actuellement exécutés sur votre ordinateur, ainsi
qu’un graphique de l’utilisation du processeur et de la mémoire :
Portez attention aux valeurs encadrées en rouge. Si rien n’est en cours d’exécution sur votre poste de travail et que cet indicateur montre une valeur élevée, il est probable que certains programmes tournent en permanence et consomment des ressources au détriment d’autres applications (vous pourrez en voir la liste dans l’onglet Processus).
Vérifiez également la mémoire utilisée par rapport à la mémoire totale disponible. Si les deux chiffres sont trop rapprochés, il est probable que le système doive transférer certaines données en mémoire sur le disque. Ce processus est extrêmement long et influera énormément sur la performance.
Futur
La course à la complexité n’est pas prête de
s’arrêter. Tant du côté matériel que du côté logiciel,
chacun invente de nouvelles méthodes pour déjouer les obstacles rencontrés.
Pour contourner les limitations physiques de la matière, on parle déjà de
gravures à 18 nanomètres (2), de puces tridimensionnelles et du transport
d’informations par des photons plutôt que par des électrons. Tout cela
entraînera inévitablement une augmentation significative des performances des
processeurs de données. Mais gageons que les pressions dirigées sur les
développeurs de logiciels feront en sorte que ceux-ci réussiront toujours à
avoir besoin d’un rendement plus élevé que ce que les machines pourront leur
fournir...
Michel Fisette
Références :
(1)
http://www.boingboing.net/2003/04/08/the-secret-history-o.html
(2)
http://www.tgdaily.com/content/view/42874/135/