我对此有几个想法。首先是,分配全局变量的速度可能更快,因为它们仅分配一次,在该程序首次产生时,而每次调用函数时,必须分配本地变量。我的第二个想法是,由于局部变量在堆栈上,因此可以通过基本指针寄存器访问它们,因此每次访问本地变量时都必须降低基本指针中存储的值;全局变量通过数据段中的静态地址直接访问。我的想法准确吗?
这是不准确的。
如果您学习计算机体系结构,您会发现最快的存储空间是寄存器,其次是caches,然后是RAM。关于本地变量的事情是,如果可能的话,编译器将它们优化为从寄存器中分配的,或从缓存中分配。这就是为什么本地变量更快的原因。
对于嵌入式系统,确保可以将其编译到微小的内存模型中,在这种情况下,您的数据段可能符合现代控制器的SRAM缓存。但是在这种情况下,您的本地变量使用情况也将非常紧张,以使它们可能完全在寄存器上运行。
结论:在大多数情况下,本地变量将比全局变量快。