C "Static"优化

标签 c optimization static

我正在阅读有关优化技术的书。虽然示例中没有太多描述或建议。事情是这样的:

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/

相关文章:

c - 如何制作50000位变量

c - 具有未知大小的结构数组的结构

c - 变量名中间的宏参数?

c - C 语言中针对 100 万条记录的数组的内存优化

go - 无法在 Go Gorilla 服务器中提供静态文件

c - 在 C 中比较不同数据类型的一般规则是什么?

c++ - 加法运算如何加速内存访问?

SQL 优化 - 从历史表中获取两个不同日期的值

c++ - 将 PORT 保存为静态常量成员

c++ - 初始化私有(private)静态变量