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

Mom*_*gil 0 c c++ optimization performance

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

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

dla*_*ask 5

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

  • 这取决于代码的应用程序.生命关键应用程序可能不支持重入代码和许多全局对象,因为动态分配和未知的最大堆栈深度是危险的.这个1,2,3列表适用于_many_ apps,不是全部. (3认同)