![]() |
1
6
分析未经优化的代码几乎毫无意义。使用
基于反馈,甚至
|
![]() |
2
11
一旦vtable在缓存中,实际执行某些操作的虚拟和非虚拟函数之间的性能差异就非常小。在使用C++开发软件时,这通常不是你应该关注的。正如其他人指出的,在C++中对未优化的代码进行基准测试是没有意义的。 |
![]() |
3
2
考虑到CPU在重新组织代码、交错计算和内存访问的情况下做了多少工作,我不会将太多的内容理解为4%的差异——这是不值得担心的,因为这样的微基准无法得出任何合理的结论。 尝试一个真实的计算,通过真实的内存访问来了解虚拟方法的成本。虚拟方法本身通常不是问题——现代CPU将把vtable获取的指针与其他工作交织在一起——正是缺少内联会降低性能。 |
![]() |
4
1
考虑到程序的简单性,编译器很有可能正在优化掉某些东西,或者这一行中的某些东西。增加复杂性/使编译器编译完全符合您的需要,这是您应该针对这类事情(在运行时的区别是,我相信只有2个解引用,因此小于函数调用的其余部分)。如@marcelo所说,实现这一点的一种方法是,将A和B分别编译成与主文件不同的文件——我将更进一步,将每个文件编译成自己的文件。但是,我不同意他的观点,因为上面提到的原因,您应该关闭优化,这样编译器就可以生成代码的文本翻译,并且不会删除任何内容。 |
|
simply lemon · python上链表的添加方法 10 月前 |
![]() |
HiroIshida · C++多重继承:实现具有重叠虚函数的接口[重复] 11 月前 |
|
Anonymous · 为什么在这个例子中self和类名的用法不同? 11 月前 |
![]() |
P N Singh · 在CPP Oops中调用对象而不创建它 11 月前 |
![]() |
Muthuraj · 如何创建一个通用工厂来创建某种类型的实例[重复] 1 年前 |
![]() |
Andy Votava · 从父类定义调用学生方法 1 年前 |