如果我在循环中调用虚拟函数 1000 次,我会承受 1000 次还是仅一次的 vtable 查找开销?
编译器也许能够优化它 - 例如,以下内容(至少在概念上)很容易优化:
Foo * f = new Foo;
for ( int i = 0; i < 1000; i++ ) {
f->func();
}
然而,其他情况则更加困难:
vector <Foo *> v;
// populate v with 1000 Foo (not derived) objects
for ( int i = 0; i < v.size(); i++ ) {
v[i]->func();
}
同样的概念优化也适用,但编译器很难看到。
底线 - 如果您真的关心它,请在启用所有优化的情况下编译代码并检查编译器的汇编器输出。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)