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

参考

相关文章
|
Linux 测试技术 Shell
Linux expect命令详解
在Linux系统中,expect 是一款非常有用的工具,它允许用户自动化与需要用户输入进行交互的程序。本文将深入探讨expect命令的基本语法、使用方法以及一些最佳实践。
1112 5
Linux expect命令详解
|
存储
matlab求解方程和多元函数方程组
matlab求解方程和多元函数方程组
2004 0
|
12月前
|
安全 Java 数据库
Java 项目实战病人挂号系统网站设计开发步骤及核心功能实现指南
本文介绍了基于Java的病人挂号系统网站的技术方案与应用实例,涵盖SSM与Spring Boot框架选型、数据库设计、功能模块划分及安全机制实现。系统支持患者在线注册、登录、挂号与预约,管理员可进行医院信息与排班管理。通过实际案例展示系统开发流程与核心代码实现,为Java Web医疗项目开发提供参考。
502 2
|
人工智能 编解码 算法
八大科技创新应用——中央广播电视总台2025蛇年春晚打造视听盛宴
八大科技创新应用——中央广播电视总台2025蛇年春晚打造视听盛宴
|
Java
***JAVA多线程的应用场景和应用目的举例
多线程使用的主要目的在于:1、吞吐量:你做WEB,容器帮你做了多线程,但是他只能帮你做请求层面的。简单的说,可能就是一个请求一个线程。或多个请求一个线程。如果是单线程,那同时只能处理一个用户的请求。2、伸缩性:也就是说,你可以通过增加CPU核数来提升性能。
2999 0
|
存储 数据挖掘 关系型数据库
DataFrame 与数据库交互:从导入到导出
【5月更文挑战第19天】本文介绍了如何在数据分析中实现DataFrame与MySQL数据库之间的数据交互。通过`pandas`的`read_sql`函数可将数据库中的数据导入DataFrame,处理后使用数据库游标执行插入或更新操作将数据导回。注意数据类型匹配、数据完整性和一致性。对于大量数据,可采用分块读取和批量操作提升效率。这种交互能结合数据库的存储管理和DataFrame的分析功能,提高数据处理效率。
693 2
|
关系型数据库 PostgreSQL
gitlab占用内存太大了如何解决?
gitlab占用内存太大了如何解决?
|
监控 Shell Linux
多行重定向,expect,字符串处理,高级变量,脚本工具
多行重定向,expect,字符串处理,高级变量,脚本工具
|
小程序 API
uniapp 蓝牙小程序
uniapp 蓝牙小程序
1031 0