C语言纳秒级计时

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为纳秒级计时

C语言纳秒级计时_第1张图片

timespec_get()失败返回0。

示例代码

#include
#include

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

你可能感兴趣的:(c++,c语言,开发语言)