我知道如果函数保持较小,内联函数比非内联函数更快。所以我在下面进行测试来比较。
#include <iostream>
#include <ctime>
using namespace std;
int f(const int& ii){return ii+1;}
inline int g(const int& ii){return ii+1;}
int main(){
int ii = 0;
clock_t t;
t = clock();
for(int i=0;i<1000000;i++){
ii = f(ii);
}
t = clock()-t;
cout << "Calling the function f 1000000 times cost "<<t<<
"clicks, corresponding to " << float(t)/CLOCKS_PER_SEC<<"seconds"<<endl;
ii = 0;
t = clock();
for(int i=0;i<1000000;i++){
ii = g(ii);
}
t = clock()-t;
cout << "Calling the inline function g 1000000 times cost "<<t<<
"clicks, corresponding to " << float(t)/CLOCKS_PER_SEC<<"seconds"<<endl;
}
结果
1000000
Calling the function f 1000000 times cost 2911clicks, corresponding to 0.002911seconds
Calling the inline function g 1000000 times cost 3291clicks, corresponding to 0.003291seconds
添加:上面的例子正在做一些微不足道的事情,所以不是一个好例子。我测试了另一个例子,它总结了正方形并使用内联函数来做正方形。使用内联功能可以快250倍 -Don
答案 0 :(得分:2)
通过优化,这些函数都不应该编译成任何东西(它们初始化和修改函数局部变量,可以优化为无操作)。如果没有打开优化,那么结果都不值得(如果性能很重要,那么你就可以开启优化)。我不会尝试从实际上没有测试任何有意义的测试中得出有用的结论。