![]() |
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”表示实例的状态没有改变,因此编译器可能有更多的自由来重新排序对该实例上方法的附近调用。 |
![]() |
Hatsune Miku · 比较或if语句是否更快[已关闭] 1 年前 |
![]() |
Black Swan · 无法解压缩的值太多(应为2)错误 1 年前 |
![]() |
Kai · 有什么方法可以轻松优化VSCode中的锈迹? 2 年前 |
![]() |
Balfar · 处理NumPy阵列上的循环最有效的方法是什么? 2 年前 |
![]() |
Daniel · C#轻松存储快速访问的大型位矩阵 7 年前 |
|
halbe · 优化音频DSP程序的numpy计算 7 年前 |
![]() |
Afsara · 是否有任何方法不能优化我们的应用程序? 7 年前 |