/ / Les variables globales sont-elles plus rapides que les variables locales en C? [fermé] - c, variables, portée, variables globales, durée de vie

Les variables globales sont-elles plus rapides que les variables locales dans C? [fermé] - c, variables, portée, variables globales, durée de vie

J'ai eu quelques réflexions à ce sujet. La première est que l'allocation de variables globales peut être plus rapide, puisqu'elles ne sont allouées qu'une seule fois, au moment du lancement du programme, alors que les variables locales doivent être allouées à chaque appel d'une fonction. Ma deuxième pensée est que puisque les variables locales sont sur la pile, elles sont accessibles via le registre du pointeur de base. La valeur stockée dans le pointeur de base doit donc être décrémentée à chaque accès à une variable locale. Les variables globales sont directement accessibles via leurs adresses statiques dans le segment de données. Est-ce que ma pensée est exacte?

Réponses:

5 pour la réponse № 1

C'est plutôt inexact.

Si vous étudiez l'architecture des ordinateurs, vous trouverezque le stockage le plus rapide sont les registres, suivis des caches, suivis de la RAM. Le problème avec les variables locales est que le compilateur les optimise pour être allouées à partir des registres si possible, ou à partir du cache si ce n’est pas le cas. C'est pourquoi les variables locales sont plus rapides.

Pour les systèmes embarqués, bien sûr, cela pourrait être possiblepour compiler sur un modèle de mémoire minuscule, auquel cas votre segment de données pourrait éventuellement s’intégrer dans le cache SRAM d’un contrôleur moderne. Mais dans ce cas, votre utilisation de la variable locale serait également très limitée, de sorte qu’ils fonctionnent probablement entièrement sur des registres.

Conclusion: dans la plupart des cas, les variables locales seront plus rapides que les variables globales.