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

参考

相关文章
|
7月前
|
C语言 Windows
【C语言】实现程序的暂停
【C语言】实现程序的暂停
250 0
|
编译器 C语言
c语言你不得不知道的内存操作函数(含模拟实现)
c语言你不得不知道的内存操作函数(含模拟实现)
93 0
|
2月前
|
C语言
【总结】单片机重点知识总结记录之C语言条件编译(五)
【总结】单片机重点知识总结记录之C语言条件编译(五)
|
6月前
|
安全 C语言
【C语言基础】:内存操作函数
【C语言基础】:内存操作函数
|
7月前
|
C语言
C语言—函数(大化小方式的心脏)
C语言—函数(大化小方式的心脏)
40 0
|
C语言
wustojc2010两小时学完C语言
wustojc2010两小时学完C语言
44 0
|
C语言 Windows
C语言课设项目-51单片机-定时器和计数器
C语言课设项目-51单片机-定时器和计数器
240 0
|
编译器 C语言 C++
初识C语言——第一个C语言程序(保姆级教程)
首先,下载好适合的编译器,此处用的是VS2017
100 0
|
Ubuntu C语言
C语言中计时函数
C语言中计时函数
C语言时间处理函数
C语言时间处理函数