测试内联函数与非内联函数的速度

时间:2015-12-12 03:15:04

标签: c++

我知道如果函数保持较小,内联函数比非内联函数更快。所以我在下面进行测试来比较。

#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

1 个答案:

答案 0 :(得分:2)

通过优化,这些函数都不应该编译成任何东西(它们初始化和修改函数局部变量,可以优化为无操作)。如果没有打开优化,那么结果都不值得(如果性能很重要,那么你就可以开启优化)。我不会尝试从实际上没有测试任何有意义的测试中得出有用的结论。