C++成员函数中的静态局部变量能不能提高程序的执行效率

现在有这个疑问,我有一个功能函数需要频繁调用,这个函数里面的临时变量比较多,我担心这么多的临时变量在这个高频调用的函数里面会影响程序执行的效率,我想将这些局部临时变量改为局部静态变量,不知道这样做能不能提高程序执行效率?另外,在程序性能优化方面有什么好的建议可以说说?

静态局部变量 和 局部变量 个人感觉提高性能不会太大。 理由如下:
void f() { static int a = 2; } //拿windows平台来说,此时的a将被分配在pe区段的data段,初始化在vc的crt函数中进行。

void f() { int a; } //不管你的临时变量有多少,对于函数 f()在开辟函数栈帧空间时,始终只有一句 sub esp, xxx,不同的只是xxx的数量多少问题,但是指令还是那些指令周期。不过对于函数栈帧空间,不同的平台可能有所不同,拿windows来说,一个exe文件默认只有1M的栈空间(vc6.0 32位中至少是这样的)。

另外我想说的是c++中static静态变量引入的动机——是为了强化函数作用域,让函数作用域中的全局变量有个局部的名字。

程序性能优化我个人浅显的理解有两点要做好:1、数学分析算法,一个强劲的算法要比优化语言来的快 2、一些代码用内联汇编写 3、基于语言的优化,其实编译器已经做的很好。特别是对于存储的优化.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-02-01
理论上是可行的,但是如果使用局部静态变量,你的函数将变成不可多线程重入,也就是当多个线程同时调用你的函数,结果是不可预料的.
第2个回答  2013-02-01
如果变量只是基本变量的话,一般情况不需要太在意分配临时变量造成的性能损失,毕竟计算机速度还是很快的,如果都改成静态变量,那不是长期占用资源,相比并不一定会好.
第3个回答  2013-02-03
局部静态变量可以高程序的时间和空间利用率的,但是你要注意作用域,要不然出来的就不是你想要的结果了
第4个回答  2013-02-01
应该可以提高效率,不过提升的效率有限。你可以在函数前面加上inline(比如:inline int sum(int x,int y);)这样也可以提高执行效率。如果想大幅提高效率建议重新想算法。