C语言纳秒级计时
文章目录
- C语言纳秒级计时
- 函数介绍
- 示例代码
- 参考
函数介绍
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;
cout << "timespec_get function: " << ((end_ns->tv_sec - start_ns->tv_sec) * 1e9 + (end_ns->tv_nsec - start_ns->tv_nsec)) / 1e6 << endl;
return 0;
}
参考
- C语言中文开发手册 https://m.php.cn/manual/view/34346.html