![]() |
1
19
如果编译器知道类实例的字段没有在const成员函数调用中被修改,那么它不必在const函数调用之前重新加载它可能保存在寄存器中的任何字段。 这是指在C++中的FAQ中的 discussion on const_cast . |
![]() |
2
5
它告诉编译器该方法对类状态没有影响;您不能为其中的任何内容赋值。看看 C++ FAQ Lite 18.10 . |
![]() |
3
4
如果const存在或不存在,则为const方法生成的asm代码将相同。const是编译器的一个函数,而不是运行时的函数,因此如果有任何性能提升,我认为编译器优化器可能会使用const作为提示,以进行内联或确定可能的优化的副作用。所以简而言之,优化器可能会帮上一点忙,但是如果方法是直接开始的话,那么我怀疑优化器生成的代码是否是任何不同的常量。 这是我使用的一个简单的优化(而不是像const这样的轻而易举的优化),它需要一秒钟的时间,但会有回报。组织类变量,使它们更好地落在缓存线边界上,并将访问最多的变量放在一起。为此,只需将int、double、float等放在类变量声明的顶部,并将奇数大小的变量放在底部,如下所示:
|
![]() |
4
2
它允许您调用类成员函数
还有
|
![]() |
5
1
它防止某些方法更改该类对象的任何成员变量。 |
![]() |
6
0
关于优化,我的第一个想法是,由于“const”表示实例的状态没有改变,因此编译器可能有更多的自由来重新排序对该实例上方法的附近调用。 |
![]() |
giantjenga · 优化整数向量到二进制向量的转换 7 月前 |
![]() |
Daniel Lobo · 使用约束进行优化 7 月前 |
![]() |
Imyaf · 在什么条件下,在组装时对“if”和“if-else”进行比较? 11 月前 |
![]() |
Sergio · python中大量数字的乘法 1 年前 |
![]() |
Sergey Dev · 临时表与表变量 1 年前 |
![]() |
John · 减少C中的内存消耗++ 1 年前 |