类成员函数与函数关于速度

klm*_*123 6 c++

可能重复:
虚函数和性能C++

这是正确的,类成员函数比简单函数需要更多时间吗?如果使用继承和虚函数怎么办?

我试图将我的函数收集到一个简单的接口类中(只有成员函数,没有数据成员),看来我浪费时间.有办法解决吗?

PS我正在检查gcc和icc编译器并使用-O3选项.

Arm*_*yan 9

过早优化是万恶之源

非静态成员函数接受一个附加参数,该参数是调用该函数的对象(指向它的指针或引用).这是一个开销.如果函数是虚函数,那么在多态调用的情况下也存在一个小的间接,即,将函数索引添加到虚拟表基本偏移量.这两个"开销"都是可以忽略不计的,你不应该担心,除非探查者说这是你的瓶颈.最有可能的不是.

过早优化是万恶之源

  • 多态函数调用产生间接,而不是函数本身的虚拟性. (3认同)

Naw*_*waz 5

成员函数(如果不是虚拟的)与自由函数相同。调用没有任何开销。

但是,在virtual成员函数的情况下,会产生开销,因为它涉及到间接寻址,即使这样,当您通过指针引用(称为多态调用)调用虚拟函数时,速度也较慢。否则,如果调用不是polymorphic,则没有区别。