函数介绍
C语言中常用的clock()
函数只能精确到毫秒级,对应的数据类型是clock_t
。
C11标准中提供了纳秒级别定时器:timespec_get()
函数与timespec()
类型。
struct timespec{ time_t tv_sec ; // seconds long tv_nsec; // nanoseconds }; #define TIME_UTC 1 //time.h 头文件里面定义的,而且只有这一个
timespec
类型有两个字段
- time_t tv_sec为秒级计时
- long tv_nsec为纳秒级计时
timespec_get()
失败返回0。
示例代码
#include<iostream> #include<time.h> using namespace std; int main(){ clock_t start_ms, end_ms; // 毫秒级计时 struct timespec start_ns, end_ns; // 纳秒级计时 C11标准库 start_ms = clock(); timespec_get(&start_ns,TIME_UTC); // do something for(int i=0;i<1000;i++){ for(int j=0;j<1000;j++) ; } end_ms = clock(); timespec_get(&end_ns,TIME_UTC); // output cout << "clock function: " << end_ms - start_ms << endl; std::cout << "timespec_get function: " << ((end_ns.tv_sec - start_ns.tv_sec) * 1e9 + (end_ns.tv_nsec - start_ns.tv_nsec)) / 1e6 << "ns" <<std::endl; return 0; }
参考
- C语言中文开发手册 https://m.php.cn/manual/view/34346.html