有一个函数需要开辟一组临时变量,为了提高代码的运行效率,这组临时变量定义为全局变量和局部变量访问速度或效率哪个好些?
全局变量是一次分配,永久使用。 而局部变量是进入代码块的时候分配,退出代码块的时候释放。 这是全局变量和局部变量最根本的区别。
如果你要问哪个快的话, 只要不是频繁分配的情况下,理论上局部变量是全局变量一样快。 因为对于cpu来说, 无论什么变量都是一个地址.
不过
局部变量放在栈中,栈中的数据一般比较容易被cache命中,而且栈中的数据可以由帧指针来加速存取.全局变量的存取可能需要2到3条指令,而且不易被命中
局部变量,每次进入函数都要重新开辟内存。
全局变量,程序运行后开辟内存。
如果分配的内存大小不变化,或者函数调用次数比较多,建议用全局的。
无profiler不要谈效率!!尤其在这个云计算、虚拟机、模拟器、CUDA、多核 、多级cache、指令流水线、多种存储介质、……满天飞的时代!