linux ns级定时器_linux用户空间获得ns纳秒级时间示例
一、引言
我们在测试程序的性能的时候往往需要获得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纳秒级时间示例相关推荐
- linux 物理内存用完了_Linux用户空间与内核空间(理解高端内存)
Linux内核地址映射模型 x86 CPU采用了段页式地址映射模型.进程代码中的地址为逻辑地址,经过段页式地址映射后,才真正访问物理内存. 段页式机制如下图. Linux内核地址空间划分 通常32位L ...
- linux ps le hrtime,前端Tips#4 - 用 process.hrtime 获取纳秒级的计时精度
视频讲解 文字讲解 如果去测试代码运行的时长,你会选择哪个时间函数? 一般第一时间想到的函数是 Date.now 或 Date.getTime. 1.先讲结论 之所以这么选,是基于 精度 和 时钟同步 ...
- linux纳秒级时间同步,可实现纳秒级精度的时间同步设计参考
描述 TIDA-00496 TI 参考设计是一种展示精密 PHYTERTM 功能的紧凑砖型设计.随着电网中更多系统将时间信息用于实时分析,时序变得十分关键.此设计使用 IEEE 1588v2 精确时间 ...
- c纳秒级计时器_C#中的高精度计时方法(纳秒级别计时)
QueryPerformanceCounter获得CPU执行计数值 __int64 startTime if(QueryPerformanceCounter((LARGE_INTEGER *)& ...
- 纳秒级分布式无锁限流插件 Current-Limiting
github:https://github.com/yueshutong/SnowJena 码云:https://gitee.com/zyzpp/spring-boot-starter-current ...
- Golang 打印耗时统计、纳秒级耗时统计(统计函数执行时间)
文章目录 Golang 打印耗时统计 普通demo 利用defer的简洁方法 利用defer更优雅的方法 纳秒级耗时统计 time.Now().UnixNano() Golang 打印耗时统计 参考U ...
- C++ - 使用std::chrono获取当前秒级/毫秒级/微秒级/纳秒级时间戳
1 使用std::chrono获取当前秒级/毫秒级/微秒级/纳秒级时间戳 1.1 当前时间戳获取方法 先使用std::chrono获取当前系统时间,然后将当前系统时间转换为纪元时间std::time_ ...
- c纳秒级计时器_C++11 计时器!真香
C++11 计时器!真香 一.前言 在我们写程序过程中,有时候需要测试我们的程序语句执行时间的耗时,当前也是有很多的库提供我们去使用,一直没有良好的跨平台的库可以提供出来:而且一般这种代码也是由我们程 ...
- c纳秒级计时器_纳秒级性能计时器
using System; using System.ComponentModel; using System.Runtime.InteropServices; using System.Thread ...
最新文章
- NeurIPS 2020 :ReID任务大幅领先,港中文开源自步对比学习框架,充分挖掘无监督学习样本...
- 源码学习【HashMap第二篇】hashMap为什么size 是2的 n次方倍
- 手动脱UPX壳的几种方法
- 计算机专业比重点线高40多分,这3所211大学,超过一本线40分就可报考,性价比高,值得报考...
- Teradata Fastload 使用方法
- 黑马商城项目级联选择占满全屏解决方案
- object detection错误之Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
- 主板19针接口_装机新人手册:一分钟学会主板跳线
- 127.0.0.1 zxt.php,恭喜您!序列号购买成功!
- display可以控制标签的显示模式
- DEVELOPMENT OF A LOW-COST VISION SYSTEM FOR FINDING CONTOUR AND SURFACE DEFECTS ON CAST IRON ENGINE
- vue使用coreUI的CDataTable踩坑记录
- 绘画能力基础资料整理
- mysql 中 字典表设计_数据库怎么设计字典表
- 3种方法设置PPT文件保护
- 达芬奇密码--buuctf密码学
- 基于c语言实现的TCP连网斗地主程序(一)
- 市场调研报告-全球与中国船用下水推车市场现状及未来发展趋势
- 【论文笔记08】Model inversion attacks that exploit confidence information and basic countermeasures 模型反转攻击
- 2019年9月Leetcode每日训练日志
热门文章
- 数字图像处理 第二章 图像处理基础
- QT中读写.ini配置文件的操作
- C++ opencv的一些基础知识
- SSD300网络结构(pytorch)+多尺度训练与测试
- __cdecl、__stdcall、__fastcall 与 __pascal 浅析
- Intel Hex概述
- delstr函数python_Python Day26:多态、封装、内置函数:__str__、__del__、反射(反省)、动态导入模块...
- python transform方法_Python transforms.BboxTransformFrom方法代码示例
- JAVA入门级教学之(while循环语句)
- 软件项目周报_有关细节、效率、周报和扯淡