首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >函数后的const如何优化程序?

函数后的const如何优化程序?
EN

Stack Overflow用户
提问于 2009-05-01 03:38:19
回答 6查看 12.7K关注 0票数 20

我见过一些这样的方法:

代码语言:javascript
复制
void SomeClass::someMethod() const;

这个const声明做了什么,它如何帮助优化程序?

编辑

我看到这个问题的第一部分以前已经被问过了。但是,它仍然没有回答第二部分:,这将如何优化程序?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-05-01 04:53:19

如果编译器知道类实例的字段在const成员函数调用中没有被修改,它就不必重新加载在const函数调用之前可能已经保存在寄存器中的任何字段。

这在某种程度上参考了discussion on const_cast中的C++常见问题。

票数 22
EN

Stack Overflow用户

发布于 2009-05-01 03:43:32

它告诉编译器该方法对类状态没有影响;您不能对其中的任何内容赋值。看一看C++ FAQ Lite 18.10

票数 5
EN

Stack Overflow用户

发布于 2009-05-01 04:47:33

无论const是否存在,为const方法生成的asm代码都是相同的。const是编译器而不是运行时的函数,所以如果有任何性能提升,我认为编译器优化器可能会使用const作为提示,比如内联或确定可能优化的副作用。因此,简而言之,优化器可能会提供一些帮助,但如果方法一开始就是直接的,那么我怀疑优化器生成的代码是否会是任何不同的常量。

这是我使用的一个简单的优化(而不是像const这样的碰碰撞撞的事情),它只需一秒钟就能得到回报。组织类变量,使它们更好地落在缓存线边界上,并将最常访问的变量放在一起。要做到这一点,只需将整型、双精度型、浮点型等放在类变量声明的顶部,将奇数大小的变量放在底部,如下所示:

代码语言:javascript
复制
int foo; 
int bar;
double baz;
SomeObject obj;
char ch[14];
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/810082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档