函数中的静态变量

Ult*_*ior 4 c

在函数计算中是否存在使用静态变量的性能问题,是否会影响函数执行的速度,因为静态变量只初始化一次?

问题是高度重复的调用优化.

考虑这个例子

int calcme(int a, int b)
{
 static int iamstatic = 20;
 return a*iamstatic + b;
}
Run Code Online (Sandbox Code Playgroud)

使用静态的原因是希望,每次调用函数时,iamstatic都不会被置于堆栈中,并且如果需要,它将被设计为更改.(省略静态变量代码)

小智 8

我认为你可能会降低性能.使用静态时,内存位于程序的bss部分.当调用该函数时,它访问两个不同的位置,即函数存储器和参数存储器.如果它是本地的,那么你可能会因本地化而获得性能,当所有参数都在同一个缓存行时,也就是当cpu读取内存时它读取一个完整的缓存行(16个字节是一个常见的行大小),你读全部一个内存中的数据访问缓存.