[C/C++11]_[初级]_[如何计算函数的运行时间]

场景

  1. C++11里新增了chrono库,可以使用这个库进行计算函数运行时间。如何做?

  2. 如果我们的编译器不支持C++11,或者使用C语言,我们如何使用标准库计算函数运行时间?

说明

  1. C的标准库里,我们可以使用clock()来获取处理器当前时间,再经过换算得到毫秒数.

  2. 而在C++11库里,使用chrono::steady_clock::now()获取当前时间点,之后相减得到时间时长chrono::duration得到函数的运行时间。

例子


#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;

void SortFunction(int number){
    vector<int> vv;
    srand(time(NULL));
    for(int i =0; i< number;++i){
        vv.push_back(rand());
    }
    sort(vv.begin(),vv.end(),greater<int>());
}

clock_t Cpp98FuncBegin()
{
    auto begin = clock();
}

void Cpp98FuncEnd(clock_t t)
{
    auto end = clock();
    auto offset = end-t;
    cout << "Cpp98 sort time: " << 1000*offset/CLOCKS_PER_SEC << "ms" << endl;
}

chrono::steady_clock::time_point Cpp11FuncBegin()
{
    return chrono::steady_clock::now();
}

void Cpp11FuncEnd(chrono::steady_clock::time_point t)
{
    auto elapse = chrono::steady_clock::now() - t;
    chrono::duration<double,milli> mi = elapse;
    cout << "Cpp11 sort time: " << mi.count() << "ms" << endl;
}

int main(int argc, char const *argv[])
{
    clock_t b1 = Cpp98FuncBegin();
    SortFunction(1000000);
    Cpp98FuncEnd(b1);

    auto b2 = Cpp11FuncBegin();
    SortFunction(1000000);
    Cpp11FuncEnd(b2);

    getchar();
    return 0;
}

运行结果

Cpp98 sort time: 608ms
Cpp11 sort time: 594.508ms

参考

clock

steady_clock

你可能感兴趣的:(C/C++标准库,clock,chrono,steady_clock,duration,毫秒)