我了解 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/