我正在阅读有关优化技术的书。虽然示例中没有太多描述或建议。事情是这样的:
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;
}
关键是:如果参数与之前计算的相同,它会立即返回之前的结果,避免了硬计算。 问题是:这两个静态变量会一直存在到程序结束吗?据我了解,有很多这样的东西是一件坏事吗?
我知道优化不多。但我只关心静态变量的影响..
非常感谢您的回答!
最佳答案
静态变量使用的内存将分配在数据段而不是堆或栈中。只有当您有大量静态变量时,这才会成为问题,因为这意味着可执行文件必须从磁盘加载更大的数据段。
但是这种方法最大的问题是它只存储一个值。最好只实现适当的 memoization如果您希望使用相同的输入进行多次重复。
关于C "Static"优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3954711/