当前位置: 首页 > 科技观察

虚函数真的那么慢吗?它的开销到底在哪里?看看这4段代码!

时间:2023-03-22 13:17:39 科技观察

想必很多人都听说过虚函数很贵。好像很多回答都说是因为虚函数表的间接调用导致的。这是真的?看看下面两段代码:#include#include"timer.h"structBase{public:virtualintf(doublei1,inti2){returnstatic_cast(i1*log(i1))*i2;}};intmain(){TimerLogt("定时器");Base*a=newBase();intai=0;for(inti=0;i<1000000000;i++){ai+=a->f(i,10);}cout<#include"timer.h"structBase{public:intf(doublei1,inti2){returnstatic_cast(i1*log(i1))*i2;}};intmain(){TimerLogt("定时器");Base*a=newBase();intai=0;for(inti=0;i<1000000000;i++){ai+=a->f(i,10);}cout<f(10,i);//这里有变化}cout<#include"timer.h"structBase{public:intf(doublei1,inti2){returnstatic_cast(i1*log(i1))*i2;}};intmain(){TimerLogt("timer");Base*a=newBase();intai=0;for(inti=0;i<1000000000;i++){ai+=a->f(10,i);//这里有变化}cout<