Est-ce que les variables de registre apportent beaucoup d’amélioration de la vitesse dans un programme ?
Article initialement publié sur Quora
Oui, mais ne vous en occupez pas, le compilateur fait ça beaucoup mieux que vous.
Selon Architecture des processeurs - Reactive, Java, Android, POO :
En architecture 64 bits, le nombre de registres est suffisamment important pour que pratiquement tous les paramètres et toutes les variables locales utilisent un registre dédié. Le protocole d’appel entre les méthodes s’appuie également fortement sur les registres. L’appelant alimente des registres avant l’appel. La pile est utilisée pour sauver l’état des registres avant l’appel et pour les paramètres complémentaires n’ayant pas trouvés de place dans un registre.
Ensuite il donnent un tableau des temps d’accès en fonction de la Hiérarchie de mémoire :
- registres : 1 cycle processeur (~1 nanoseconde)
- cache L1 : 1 microseconde (1000x plus lent…)
- cache L2 : 4 microsecondes
- cache L3 : 10 à 20 microsecondes
- RAM : > 200 microsecondes (~200'000x plus lent que le registre…)

Sur le même sujet
- Peut-on dire qu’à partir d’un cahier des charges, avec deux langages différents, on obtiendra deux programmes compilés identiques, pour un même processeur ?
- D'où vient la phrase ce n'est pas un bug mais une fonctionnalité ? Je l'ai découverte en regardant la série Silicon Valley mais est-elle plus ancienne que ça ?
- Est-il plus difficile de programmer sur un ordinateur quantique que sur un ordinateur normal ?
- La rétro-ingénierie est-elle légale ?
- Puis-je devenir un bon programmeur sans connaissances en mathématiques et en algorithmes ?
