La mémoire est une ressource rare. Il n'en existe qu'un seul exemplaire et tous les processus actifs doivent la partager. Si les mécanismes de gestion de ce partage sont peu efficaces l'ordinateur sera peu performant, quelque soit la puissance de son processeur. Celui-ci sera souvent interrompu en attente d'un échange qu'il aura réclamé. Si un programme viole les règles de fonctionnement de la mémoire, il en sera de même.
Lorsqu'on veut connaître les performances d'un ordinateur, on mesure pour chaque programme d'un jeu de tests trois temps :
- le temps de travail du processeur, directement proportionnel à la puissance de celui-ci
- le temps système qui traduit l'efficacité du système d'exploitation et des échanges avec la mémoire
- le temps total d'exécution, c'est à dire le temps qui s'est écoulé entre le début et la fin du programme. C'est la seule notion qui intéresse l'usager. Ce dernier temps peut être très supérieur à la somme des deux premiers si le programme testé viole les règles de gestion de la mémoire. Souvent de légères modifications du code suffisent à bouleverser les performances. Par exemple, comme nous le verrons, lorsqu'on travaille sur les éléments d'un grand tableau, il est aisé de faire varier de 30% à 50% ce temps simplement en choisissant l'ordre de manipulation des indices.
Pour écrire des programmes efficaces il faut bien comprendre comment la mémoire est gérée.
Copyright Yves Epelboin, université P.M. Curie, février 2003, MAJ
8 mars, 2006