相关疑难解决方法(0)

const在C/C++中提供了哪些优化?(如果有的话)

我知道在可能的情况下,在通过引用或指针传递参数时,应尽可能使用const关键字.如果我指定参数是常量,编译器可以做的任何优化吗?

可能有几种情况:

功能参数:

常量参考:

void foo(const SomeClass& obj)
Run Code Online (Sandbox Code Playgroud)

Constant SomeClass对象:

void foo(const SomeClass* pObj)
Run Code Online (Sandbox Code Playgroud)

并且指向SomeClass的常量指针:

void foo(SomeClass* const pObj)
Run Code Online (Sandbox Code Playgroud)

变量声明:

const int i = 1234
Run Code Online (Sandbox Code Playgroud)

函数声明:

const char* foo()
Run Code Online (Sandbox Code Playgroud)

每个提供什么样的编译器优化(如果有的话)?

c c++ const compiler-optimization

58
推荐指数
4
解决办法
2万
查看次数

C++中的常量和编译器优化

我已经阅读了关于C++中const-correctness的所有建议,并且它(部分)很重要,因为它有助于编译器优化代码.我从未见过的是关于编译器如何使用这些信息来优化代码的一个很好的解释,甚至连好书都没有解释幕后发生的事情.

例如,编译器如何优化声明为const的方法与不应该但应该是的方法.当你引入可变变量时会发生什么?它们会影响const方法的这些优化吗?

c++ compiler-construction optimization

49
推荐指数
4
解决办法
2万
查看次数

声明C++变量const是否有助于或损害性能?

我理解 - 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);
Run Code Online (Sandbox Code Playgroud)

假设我const在所有这些方面只需要合格的方法(以及更多.)在声明它们时是否有任何性能提升const?或者,相反,这实际上是否会损害性能?

我很好奇两个运行时性能(我猜这没有区别,因为const它只是一个编译时检查 - 有人可以确认吗?)和编译时性能.我对c ++没有足够的经验来感受这一点,并且我想知道const当所有其他事情(可维护性等)相等时我是否应该在过度或不足的情况下犯错.

c++ performance const

7
推荐指数
1
解决办法
5718
查看次数