可能重复:
虚函数和性能C++
这是正确的,类成员函数比简单函数需要更多时间吗?如果使用继承和虚函数怎么办?
我试图将我的函数收集到一个简单的接口类中(只有成员函数,没有数据成员),看来我浪费时间.有办法解决吗?
PS我正在检查gcc和icc编译器并使用-O3选项.
非静态成员函数接受一个附加参数,该参数是调用该函数的对象(指向它的指针或引用).这是一个开销.如果函数是虚函数,那么在多态调用的情况下也存在一个小的间接,即,将函数索引添加到虚拟表基本偏移量.这两个"开销"都是可以忽略不计的,你不应该担心,除非探查者说这是你的瓶颈.最有可能的不是.
成员函数(如果不是虚拟的)与自由函数相同。调用没有任何开销。
但是,在virtual成员函数的情况下,会产生开销,因为它涉及到间接寻址,即使这样,当您通过指针或引用(称为多态调用)调用虚拟函数时,速度也较慢。否则,如果调用不是polymorphic,则没有区别。
| 归档时间: |
|
| 查看次数: |
1146 次 |
| 最近记录: |