是否值得将局部变量设为静态以防止不断重新创建?

时间:2015-07-17 18:13:38

标签: c++ c performance optimization

假设我在C / C ++中有一个非常频繁地调用的函数(假设它连接到一个超时至少每秒10次的计时器)并且该函数需要使用给定的变量/容器(整数或者也许是字符串或数组)。现在,自然而然,在内存中创建此变量的过程会花费一些处理器时钟;因此一次又一次地运行相同的功能意味着我将放弃相当多的“处理器时钟滴答”,以便多次执行完全相同的操作。这可以通过使变量全局,函数类的成员或static来防止:在任何这种情况下,变量/容器只会创建一次而且许多“处理器时钟滴答”用于始终执行将保存相同的操作。

我的问题是:这个操作真的值得吗(当谈到性能时)?换句话说,将变量创建为全局,类的成员或static是一种改进(即使只是一点点)代码性能的实际方法,还是有其他可能容易杀死的东西任何可能的改进? (例如,static变量可能总是在堆上而不是在堆栈中创建,并且因为第一个变量比第二个慢,所以最终会破坏这种策略的性能)或者没有“全局变量”规则“用于了解事物,因为它取决于许多具体问题,例如使用的处理器,编译器完成的优化以及变量/容器的类型,这样只有基于逐案研究的基准才能真正说明差异?< / p>

1 个答案:

答案 0 :(得分:5)

  1. 使用局部变量。只有你不能......
  2. 使用对象变量。只有你不能......
  3. 使用全局(或静态)变量。
  4. 避免使用第3点。