【发布时间】:2011-04-21 11:41:53
【问题描述】:
我了解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-qualified 方法。将它们全部声明为const 是否有任何性能提升?或者,反过来说,这真的会影响性能吗?
我对运行时性能(我猜这没有什么区别,因为 const 完全是编译时检查——有人可以确认吗?)和编译时性能都很好奇表现。我没有足够的 C++ 经验来感受这一点,我想知道当所有其他事情(可维护性等)都相同时,我是否应该在过度或不足应用 const 方面犯错。
【问题讨论】:
-
在大多数情况下,没有运行时性能差异
-
Qt 是大量的写时复制,所以我怀疑 const 在这里可以产生真正的影响。
标签: c++ performance constants