【发布时间】:2013-04-29 12:53:40
【问题描述】:
假设您的第一个目标是执行速度,然后是代码清洁度,最后是资源使用率。
如果在算法的某个点,一个变量(例如一个双精度数)不会再发生变化(但您仍会多次读取它),您会将其复制为一个常量值吗?
【问题讨论】:
-
很有可能编译器会检测到您的变量不会再被更改并优化(如果可以的话)作为这个观察的结果。现在,如果它使代码更清晰,请继续。但是您可能不应该太担心这种“优化”。
-
我认为,Herb Sutter 在这里准确描述了这个问题:Complex initialization for a const variable。
-
@EvgenyKluev:这是一个很好的提示。你为什么不把它作为一个答案?我很乐意对此表示赞同。
-
@EvgenyKluev:即使没有 lambda,我也经常使用
static函数来进行初始化......请注意,我在 Sutter 的帖子中没有看到任何关于性能的声明。
标签: c++ algorithm variables optimization constants