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

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

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

【 tulaoshi.com - Linux教程 】

在进行Linux系统操作的时候,因为测试程序性能的需要,必须将获得的时间精确到ns级,那么具体要如何实现呢?下面图老师小编就教你如何使用函数实现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《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);

printf(duration:%llus %llunsn, time_end.tv_sec-time_start.tv_sec, time_end.tv_nsec-time_start.tv_nsec);

return 0;

}

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

编译命令:

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

代码如下:

gcc test.c -o test -lrt

运行结果:

代码如下:

。/test

start time 1397395863s,973618673 ns

endtime 1397395863s,973633297 ns

duration:0s 14624ns

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

上面就是Linux下使用函数获得ns级时间的方法介绍了,如果你在测试程序性能需要精确到ns级时间的话,可以试试本文介绍的方法,是不是很简单呢?

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

延伸阅读
标签: 电脑入门
通过前面的介绍,我们了解到Linux中cgroups可用来限制cpu资源,那么具体要如何实现呢?下面图老师小编就给大家介绍下Linux中如何使用cgroups来限制cpu资源。 这回说说怎样通过 cgroups 来管理 cpu 资源。先说控制进程的 cpu 使用。在一个机器上运行多个可能消耗大量资源的程序时,我们不希望出现某个程序占据了所有的资源,导致其他程序无...
标签: Web开发
利用PHP创建图像是相当容易的一件事情。只要安装一些第三方的库文件并具有一定的几何知识,就可以利用PHP来创建和处理图像了。目前PHP使用GD库处理图像。在PHP中一些图像函数是可以直接使用的,但是大多数函数需要安装GD函数库。GD库提供一系列函数进行画图、使用颜色、处理预存的图像和填充操作。GD库是Thomas Boutell设计的ANSI C语言编...
标签: 电脑入门
如果Linux系统中的硬件时钟和系统时钟不同步的话,就可能导致一些错误,所以系统时钟和硬件时钟的同步是很重要的,下面图老师小编将给大家介绍如何使用命令来同步Linux系统的时钟。 linux的系统时钟在很多地方都要用到,要是不准,就会出现一些奇怪的问题; 在Linux中,用于时钟查看和设置的命令主要有date、hwclock和clock。Linux时钟分...
标签: ASP
  MonthName 函数 描述:返回表明指定月份的字符串。 语法:MonthName(month[, abbreviate]) month: 必选。月份的数值定义。例如,一月是 1,二月是 2,以此类推。 abbreviate: 可选。Boolean 值,表明月份名称是否简写。如果省略,默认值为 False,即不简写月份名称。 Now 函数 描述:根据计算机系统设定的日期和时间返回当前的日期和时...
  作 者: Koun (2001-05-10 09:51:54) 无须废话,在linux下刻盘分四部曲:  1.编译内核(依系统情况可以略过). 2.加载相应驱动模块. 3.制作iso9660文件系统的映象文件 4.刻盘  缺省情况下,你的linux内核或许不支持SCSI设备,而现在的刻录机却许多接在一个 scsi卡上的.因此,在这种情况下,需要从新编译内核,让它支持SCSI设...

经验教程

521

收藏

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