计时的方法很多,有C/C++自带的计时方法,也有window的计时API或者Linux的API,本文只介绍std::chrono的最简单用法。
chrono的计时单位是ns,精度是100ns(1ms = 1000000ns)。下面代码中chrono计时部分(double)(te-ts).count()的单位是ns,(double)(te-ts).count()/1000000单位是ms。
clock的计时单位是ms,精度是10000ms,即0.01s,低于这个时间的间隙计时为0。下面代码中clock部分(double)(te_1-ts_1)的单位是ms,(double)(te_1-ts_1)/CLOCKS_PER_SEC单位是s。
以下面代码为例,chrono计时为0.042393ms,但是clock的计时为0s,这是因为打印的时间远远小于clock的精度,所以统计时间为0,因此在统计时间非常小的时候用chrono才能反应精确的时间。(并没有研究过更多时间统计方法,仅仅是chrono和clock两种方法的对比而已)
#include <iostream>
#include <chrono>
int main(){
// chrono recorde time
auto ts = std::chrono::system_clock::now();
std::cout<<" balabala"<<std::endl;
auto te = std::chrono::system_clock::now();
std::cout<<"chrono time:"<<(double)(te-ts).count()/1000000<<std::endl;
// clock recorde time
clock_t ts_1 = std::clock();
std::cout<<" balabala"<<std::endl;
clock_t te_1 = std::clock();
std::cout<<"clock time:"<<(double)(te_1-ts_1)/CLOCKS_PER_SEC<<std::endl;
return 0;
}