Linux下如何使用函数获取ns级时间

2016-02-19 19:44 20 1 收藏

生活已是百般艰难,为何不努力一点。下面图老师就给大家分享Linux下如何使用函数获取ns级时间,希望可以让热爱学习的朋友们体会到设计的小小的乐趣。

【 tulaoshi.com - Linux教程 】

在进行Linux系统操作的时候,因为测试程序性能的需要,必须将获得的时间精确到ns级,那么具体要如何实现呢?下面图老师小编就教你如何使用函数实现Linux用户空间ns级时间的获取,一起来学习下吧。

 Linux下如何使用函数获取ns级时间

一、引言

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

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

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com)

使用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《stdio.h》

#include《stdlib.h》

#include《time.h》

int main(void)

{

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

clock_gettime(CLOCK_REALTIME, &time_start);

printf(start time %llus,%llu nsn, time_start.tv_sec, time_start.tv_nsec);

clock_gettime(CLOCK_REALTIME, &time_end);

printf(endtime %llus,%llu nsn, time_end.tv_sec, time_end.tv_nsec);

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com)

printf(duration:%llus %llunsn, 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级时间的方法介绍了,如果你在测试程序性能需要精确到ns级时间的话,可以试试本文介绍的方法,是不是很简单呢?

来源:https://www.tulaoshi.com/n/20160219/1621678.html

延伸阅读
作 者: 李德永 由于Linux与windows在图形显示的内在原理上有着本质不同,Linux的内核不控制图形显示,它通过外挂一个称为X服务器的应用程序显示图形界面,属于用户态行为;而windows的微内核中一个叫GDI(图形设备接口)的子系统,由它在核心态控制图形界面的显示。所以用户在使用Linux时不要抱怨Linux的图形显示不能像windows...
    系统管理员经常需要远程登录服务器     然后在服务器上跑一些程序     有个时候     得跑很长时间(超过12小时)     这是如果程序没结束就退出远程管理终端     远程跑的程序很有可能就此当掉     以前常用的解决方式是用命令n...
标签: 电脑入门
如果Linux系统中的硬件时钟和系统时钟不同步的话,就可能导致一些错误,所以系统时钟和硬件时钟的同步是很重要的,下面图老师小编将给大家介绍如何使用命令来同步Linux系统的时钟。 linux的系统时钟在很多地方都要用到,要是不准,就会出现一些奇怪的问题; 在Linux中,用于时钟查看和设置的命令主要有date、hwclock和clock。Linux时钟分...
标签: ASP
  MonthName 函数 描述:返回表明指定月份的字符串。 语法:MonthName(month[, abbreviate]) month: 必选。月份的数值定义。例如,一月是 1,二月是 2,以此类推。 abbreviate: 可选。Boolean 值,表明月份名称是否简写。如果省略,默认值为 False,即不简写月份名称。 Now 函数 描述:根据计算机系统设定的日期和时间返回当前的日期和时...
标签: ASP
  DateSerial 函数 描述:对于指定的年、月、日,返回 Date 子类型的 Variant。 语法:DateSerial(year, month, day) year: 从 100 到 9999 之间的数字或数值表达式。 month: 任意数值表达式。 day: 任意数值表达式。 说明:要指定日期,如 1991 年 12 月 31 日,DateSerial 函数中每个参数的取值范围都应该是可接受的;即日的取值应在 1 ...

经验教程

27

收藏

36
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部