|
|
1
6
分析未经优化的代码几乎毫无意义。使用
基于反馈,甚至
|
|
|
2
11
一旦vtable在缓存中,实际执行某些操作的虚拟和非虚拟函数之间的性能差异就非常小。在使用C++开发软件时,这通常不是你应该关注的。正如其他人指出的,在C++中对未优化的代码进行基准测试是没有意义的。 |
|
|
3
2
考虑到CPU在重新组织代码、交错计算和内存访问的情况下做了多少工作,我不会将太多的内容理解为4%的差异——这是不值得担心的,因为这样的微基准无法得出任何合理的结论。 尝试一个真实的计算,通过真实的内存访问来了解虚拟方法的成本。虚拟方法本身通常不是问题——现代CPU将把vtable获取的指针与其他工作交织在一起——正是缺少内联会降低性能。 |
|
|
4
1
考虑到程序的简单性,编译器很有可能正在优化掉某些东西,或者这一行中的某些东西。增加复杂性/使编译器编译完全符合您的需要,这是您应该针对这类事情(在运行时的区别是,我相信只有2个解引用,因此小于函数调用的其余部分)。如@marcelo所说,实现这一点的一种方法是,将A和B分别编译成与主文件不同的文件——我将更进一步,将每个文件编译成自己的文件。但是,我不同意他的观点,因为上面提到的原因,您应该关闭优化,这样编译器就可以生成代码的文本翻译,并且不会删除任何内容。 |
|
AstralHex · 矩阵乘法代码工作不正常 8 月前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 8 月前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 8 月前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 8 月前 |