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

会坚守我们的爱

会坚守我们的爱

2016-02-19 19:44

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

在进行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结构

代码如下:

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

struct timespec

{

time_t tv_sec;

long int tv_nsec;

};

使用范例代码如下:

代码如下:

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

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

}

编译命令:

代码如下:

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

gcc test.c -o test -lrt

运行结果:

代码如下:

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

。/test

start time 1397395863s,973618673 ns

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

endtime 1397395863s,973633297 ns

duration:0s 14624ns

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

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

展开更多 50%)
分享

猜你喜欢

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

电脑入门
Linux下如何使用函数获取ns级时间

Linux下如何使用cat命令?

电脑入门
Linux下如何使用cat命令?

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Linux下如何使用read命令

电脑入门
Linux下如何使用read命令

Linux下如何使用touch命令?

电脑入门
Linux下如何使用touch命令?

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Linux下如何使用ftp命令

电脑入门
Linux下如何使用ftp命令

如何在Linux下使用Git

电脑入门
如何在Linux下使用Git

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

重装Linux后无法连接网络该如何解决

重装Linux后无法连接网络该如何解决

Linux vsftp中提示530 Permission denied怎么办?

Linux vsftp中提示530 Permission denied怎么办?
下拉加载更多内容 ↓