c++ - 将 C++ 变量声明为 const 是有助于还是损害性能?

标签 c++ performance constants

我了解 const 限定数据类型的行为。不过,我很好奇,如果过度或不够热心地将限定变量作为 const,是否会带来任何性能增益或损失。我特别考虑在隔离代码块中声明和使用的变量。例如,像这样的东西:

const qreal padding = CalculatePadding();
const QSizeF page_size = CalculatePagePreviewSize(padding);
const QRectF content_rect = CalculatePagePreviewContentRect(page_size);
const QList<QRectF> pages = renderer.BuildPrintPages(printer_, map_scene_);
const QFont page_number_font = CalculatePageNumberFont();
const QFontMetrics metrics(page_number_font);

假设我在所有这些(以及更多)上只需要 const 限定的方法。将它们全部声明为 const 是否有任何性能提升?或者,相反,这是否真的会影响性能?

我很好奇这两种运行时性能(我猜这没有什么区别,因为 const 完全是编译时检查——有人可以确认吗? ) 和编译时性能。我没有足够的 c++ 经验来感受这一点,并且想知道当所有其他事情(可维护性等)都出现问题时,我是否应该在过度或不足应用 const 方面犯错是平等的。

最佳答案

const 主要是编译时的事情,但是,将某些内容声明为 const 有时可以进行某些优化。如果有问题的代码不是性能瓶颈,我不会担心,只是按预期使用 const:生成更清晰的代码并防止自己做傻事。

关于c++ - 将 C++ 变量声明为 const 是有助于还是损害性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3867001/

相关文章:

c++ - 字符串文字的本地化

java - 如何将特定 JRE 版本设置为 JBoss 上运行的 Java 应用程序的默认版本

c++ - 带有常量修饰符的引用

c++ - 将唯一指针 vector 复制到新 vector 中

java - 从 C++ 应用程序从 Java 调用 C++ 时,如何避免 UnsatisfiedLinkError?

c++ - 随机选择一个空的 vector 元素,如果可以事先知道哪些元素是满的

java - jdbc数据集是否将所有行存储在jvm内存中

c - 将 float/double 转换为字符串的高效函数

html - 在 Ionic 3 中访问 HTML 中的常量

c++ - std 容器的模板 typedef(没有专门化)?