我正在读关于优化teckniks的书.但是在示例中没有太多描述或建议.这是事情:
int agag(int a)
{
static int dfdfdf = 0;
static int prev_resilt = 0;
if (dfdfdf == a)
return prev_result;
dfdfdf = a;
a = SomeCalcs();
prev_result = a;
return a;
}
Run Code Online (Sandbox Code Playgroud)
关键是:如果参数与先前的计算相同,它将立即返回先前的结果,避免进行硬计算.问题是:这两个静态变量会在程序结束之前存在吗?据我了解,拥有很多这些是件坏事?
我知道这不是很多优化.但我只关心静态变量的影响..
非常感谢你的答案!
静态变量使用的内存将分配在数据段中而不是堆或堆栈中.当您拥有大量静态变量时,这只会成为一个问题,因为这意味着可执行文件必须从磁盘加载更大的数据段.
但这种方法的最大问题是它只存储一个值.如果您希望使用相同的输入重复多次重复,那么最好只执行适当的memoization.