假设我在C / C ++中有一个非常频繁地调用的函数(假设它连接到一个超时至少每秒10次的计时器)并且该函数需要使用给定的变量/容器(整数或者也许是字符串或数组)。现在,自然而然,在内存中创建此变量的过程会花费一些处理器时钟;因此一次又一次地运行相同的功能意味着我将放弃相当多的“处理器时钟滴答”,以便多次执行完全相同的操作。这可以通过使变量全局,函数类的成员或static
来防止:在任何这种情况下,变量/容器只会创建一次而且许多“处理器时钟滴答”用于始终执行将保存相同的操作。
我的问题是:这个操作真的值得吗(当谈到性能时)?换句话说,将变量创建为全局,类的成员或static
是一种改进(即使只是一点点)代码性能的实际方法,还是有其他可能容易杀死的东西任何可能的改进? (例如,static
变量可能总是在堆上而不是在堆栈中创建,并且因为第一个变量比第二个慢,所以最终会破坏这种策略的性能)或者没有“全局变量”规则“用于了解事物,因为它取决于许多具体问题,例如使用的处理器,编译器完成的优化以及变量/容器的类型,这样只有基于逐案研究的基准才能真正说明差异?< / p>
答案 0 :(得分:5)