一、引言

我们在测试程序的性能的时候往往需要获得ns级的精确时间去衡量一个程序的性能,下面介绍下linux中用户空间获得ns级时间的方法

二、用户空间获得ns级时间

使用clock_gettime函数,函数原型如下:

long sys_clock_gettime (clockid_t which_clock, struct timespec *tp);

1.which_clock参数解释

CLOCK_REALTIME:系统实时时间,随系统实时时间改变而改变,即从UTC1970-1-1 0:0:0开始计时,中间时刻如果系统时间被用户该成其他,则对应的时间相应改变

CLOCK_MONOTONIC:从系统启动这一刻起开始计时,不受系统时间被用户改变的影响

CLOCK_PROCESS_CPUTIME_ID:本进程到当前代码系统CPU花费的时间

CLOCK_THREAD_CPUTIME_ID:本线程到当前代码系统CPU花费的时间

2.struct timespec结构

复制代码

代码如下:

struct timespec

{

time_t tv_sec;

long int tv_nsec;

};

使用范例代码如下:

复制代码

代码如下:

#include

#include

#include

int main(void)

{

struct timespec time_start={0, 0},time_end={0, 0};

clock_gettime(CLOCK_REALTIME, &time_start);

printf("start time %llus,%llu ns\n", time_start.tv_sec, time_start.tv_nsec);

clock_gettime(CLOCK_REALTIME, &time_end);

printf("endtime %llus,%llu ns\n", time_end.tv_sec, time_end.tv_nsec);

printf("duration:%llus %lluns\n", time_end.tv_sec-time_start.tv_sec, time_end.tv_nsec-time_start.tv_nsec);

return 0;

}

编译命令:

复制代码

代码如下:

gcc test.c -o test -lrt

运行结果:

复制代码

代码如下:

./test

start time 1397395863s,973618673 ns

endtime 1397395863s,973633297 ns

duration:0s 14624ns

从运行结果可以看出 调用printf()函数一次需要15us左右。

linux ns级定时器_linux用户空间获得ns纳秒级时间示例相关推荐

  1. linux 物理内存用完了_Linux用户空间与内核空间(理解高端内存)

    Linux内核地址映射模型 x86 CPU采用了段页式地址映射模型.进程代码中的地址为逻辑地址,经过段页式地址映射后,才真正访问物理内存. 段页式机制如下图. Linux内核地址空间划分 通常32位L ...

  2. linux ps le hrtime,前端Tips#4 - 用 process.hrtime 获取纳秒级的计时精度

    视频讲解 文字讲解 如果去测试代码运行的时长,你会选择哪个时间函数? 一般第一时间想到的函数是 Date.now 或 Date.getTime. 1.先讲结论 之所以这么选,是基于 精度 和 时钟同步 ...

  3. linux纳秒级时间同步,可实现纳秒级精度的时间同步设计参考

    描述 TIDA-00496 TI 参考设计是一种展示精密 PHYTERTM 功能的紧凑砖型设计.随着电网中更多系统将时间信息用于实时分析,时序变得十分关键.此设计使用 IEEE 1588v2 精确时间 ...

  4. c纳秒级计时器_C#中的高精度计时方法(纳秒级别计时)

    QueryPerformanceCounter获得CPU执行计数值 __int64 startTime if(QueryPerformanceCounter((LARGE_INTEGER *)& ...

  5. 纳秒级分布式无锁限流插件 Current-Limiting

    github:https://github.com/yueshutong/SnowJena 码云:https://gitee.com/zyzpp/spring-boot-starter-current ...

  6. Golang 打印耗时统计、纳秒级耗时统计(统计函数执行时间)

    文章目录 Golang 打印耗时统计 普通demo 利用defer的简洁方法 利用defer更优雅的方法 纳秒级耗时统计 time.Now().UnixNano() Golang 打印耗时统计 参考U ...

  7. C++ - 使用std::chrono获取当前秒级/毫秒级/微秒级/纳秒级时间戳

    1 使用std::chrono获取当前秒级/毫秒级/微秒级/纳秒级时间戳 1.1 当前时间戳获取方法 先使用std::chrono获取当前系统时间,然后将当前系统时间转换为纪元时间std::time_ ...

  8. c纳秒级计时器_C++11 计时器!真香

    C++11 计时器!真香 一.前言 在我们写程序过程中,有时候需要测试我们的程序语句执行时间的耗时,当前也是有很多的库提供我们去使用,一直没有良好的跨平台的库可以提供出来:而且一般这种代码也是由我们程 ...

  9. c纳秒级计时器_纳秒级性能计时器

    using System; using System.ComponentModel; using System.Runtime.InteropServices; using System.Thread ...

最新文章

  1. NeurIPS 2020 :ReID任务大幅领先,港中文开源自步对比学习框架,充分挖掘无监督学习样本...
  2. 源码学习【HashMap第二篇】hashMap为什么size 是2的 n次方倍
  3. 手动脱UPX壳的几种方法
  4. 计算机专业比重点线高40多分,这3所211大学,超过一本线40分就可报考,性价比高,值得报考...
  5. Teradata Fastload 使用方法
  6. 黑马商城项目级联选择占满全屏解决方案
  7. object detection错误之Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
  8. 主板19针接口_装机新人手册:一分钟学会主板跳线
  9. 127.0.0.1 zxt.php,恭喜您!序列号购买成功!
  10. display可以控制标签的显示模式
  11. DEVELOPMENT OF A LOW-COST VISION SYSTEM FOR FINDING CONTOUR AND SURFACE DEFECTS ON CAST IRON ENGINE
  12. vue使用coreUI的CDataTable踩坑记录
  13. 绘画能力基础资料整理
  14. mysql 中 字典表设计_数据库怎么设计字典表
  15. 3种方法设置PPT文件保护
  16. 达芬奇密码--buuctf密码学
  17. 基于c语言实现的TCP连网斗地主程序(一)
  18. 市场调研报告-全球与中国船用下水推车市场现状及未来发展趋势
  19. 【论文笔记08】Model inversion attacks that exploit confidence information and basic countermeasures 模型反转攻击
  20. 2019年9月Leetcode每日训练日志

热门文章

  1. 数字图像处理 第二章 图像处理基础
  2. QT中读写.ini配置文件的操作
  3. C++ opencv的一些基础知识
  4. SSD300网络结构(pytorch)+多尺度训练与测试
  5. __cdecl、__stdcall、__fastcall 与 __pascal 浅析
  6. Intel Hex概述
  7. delstr函数python_Python Day26:多态、封装、内置函数:__str__、__del__、反射(反省)、动态导入模块...
  8. python transform方法_Python transforms.BboxTransformFrom方法代码示例
  9. JAVA入门级教学之(while循环语句)
  10. 软件项目周报_有关细节、效率、周报和扯淡