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;
    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;
}

参考

目录
打赏
0
0
0
0
5
分享
相关文章
|
10月前
|
【C语言】实现程序的暂停
【C语言】实现程序的暂停
308 0
C语言常见库函数的模拟实现
C语言常见库函数的模拟实现
76 0
c语言你不得不知道的内存操作函数(含模拟实现)
c语言你不得不知道的内存操作函数(含模拟实现)
103 0
深入探索C语言动态内存分配:释放你的程序潜力
深入探索C语言动态内存分配:释放你的程序潜力
108 0
【C语言】获取程序运行时间代码模板
【C语言】获取程序运行时间代码模板
138 0