我见过一些这样的方法:
void SomeClass::someMethod() const;
这个const声明做了什么,它如何帮助优化程序?
编辑
我看到这个问题的第一部分以前已经被问过了。但是,它仍然没有回答第二部分:,这将如何优化程序?
发布于 2009-05-01 04:53:19
如果编译器知道类实例的字段在const成员函数调用中没有被修改,它就不必重新加载在const函数调用之前可能已经保存在寄存器中的任何字段。
这在某种程度上参考了discussion on const_cast中的C++常见问题。
发布于 2009-05-01 03:43:32
它告诉编译器该方法对类状态没有影响;您不能对其中的任何内容赋值。看一看C++ FAQ Lite 18.10。
发布于 2009-05-01 04:47:33
无论const是否存在,为const方法生成的asm代码都是相同的。const是编译器而不是运行时的函数,所以如果有任何性能提升,我认为编译器优化器可能会使用const作为提示,比如内联或确定可能优化的副作用。因此,简而言之,优化器可能会提供一些帮助,但如果方法一开始就是直接的,那么我怀疑优化器生成的代码是否会是任何不同的常量。
这是我使用的一个简单的优化(而不是像const这样的碰碰撞撞的事情),它只需一秒钟就能得到回报。组织类变量,使它们更好地落在缓存线边界上,并将最常访问的变量放在一起。要做到这一点,只需将整型、双精度型、浮点型等放在类变量声明的顶部,将奇数大小的变量放在底部,如下所示:
int foo;
int bar;
double baz;
SomeObject obj;
char ch[14];
https://stackoverflow.com/questions/810082
复制相似问题