Est-il plus rapide d'accéder à une variable globale ou objet?Différence de vitesse entre la variable globale et la variable objet
En C++, je fais référence à la différence entre
::foo
et
this->foo
En assembleur x86, cela se traduit essentiellement à
mov eax, offset foo
vs
mov eax, dword ptr[edx+foo]
Toutes les données dans les deux cas devraient être dans le cache.
(Je connais la différence s'il y en a une minuscule, et il faut généralement choisir celle qui simplifie le code, mais dans ce cas il n'y a littéralement aucune autre différence, et le code en question s'appellera peut-être un demi-milliard fois dans une limite de temps, donc je pourrais aussi bien aller avec celui qui est même un peu plus rapide.)
Qu'en est-il du test et du timing des deux variantes? – sharptooth
Si cela est important, cela vaut la peine d'être chronométré. Cela dit, la variable membre sera probablement plus souvent mise en cache avec vos autres données. – GManNickG
"Sous une limite de temps"? Quelle est la limite de temps? Un demi-milliard d'accès par seconde pourrait signifier que cela a une incidence sur la performance, mais un demi-milliard par heure le rendrait complètement insignifiant. – jalf