博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux下精确控制时间的函数
阅读量:5782 次
发布时间:2019-06-18

本文共 1492 字,大约阅读时间需要 4 分钟。

Linux下精确控制时间的函数

 

         在测试程序接口运行时间的时候,常用time,gettimeofday等函数,但是这些函数在程序执行的时候是耗费时间的,如果仅仅测试时间还行,但是如果程序中用到时间控制类的函数,如time,  gettimeofday自身还会消耗不少时间,且增加程序执行的成本,这样得到的时间不精确。

         针对这种情况,使用CPU心跳的函数来处理时间,经封装后的函数得到时间精确,且使用方便。

 

         缺点:有一些机子由于硬件原因,可能不支持CPU心跳rdtscpll函数的使用,一般在虚拟机上都不行。

 

         使用情况:在我做机顶盒测试工具的时候,使用该方法去控制每秒钟连接用户数(每秒钟连接100个用户),测试效果比较理想,基本是每隔1秒钟有100个用户上线。

 

下面贴上函数代码:

 

#include 
#include
#include
#include
long long g_var_llOneSecJiffiesCount = 0;long long GetCurCpuHopCount(){ long long llcurrentcpuhopcount; int iaux; rdtscpll(llcurrentcpuhopcount,iaux); return llcurrentcpuhopcount;}int main(int argc, char* argv[]){ long long llstartvalue = 0; long long llendvalue = 0; struct timeval starttm,endtm; int iaux = 0; gettimeofday(&starttm,NULL); rdtscpll(llstartvalue,iaux); sleep(3); rdtscpll(llendvalue,iaux); gettimeofday(&endtm,NULL); g_var_llOneSecJiffiesCount = ((llendvalue-llstartvalue)*1000000/(endtm.tv_sec*1000000-starttm.tv_sec*1000000+endtm.tv_usec-starttm.tv_usec));//使用心跳来代替妙 long long begin_time = GetCurCpuHopCount(); sleep(100);//该处可以测试一些功能 long long end_time = GetCurCpuHopCount(); long long use_time = (end_time - begin_time) * 1000000 / g_var_llOneSecJiffiesCount; printf("测试一个功能 use time(us): %lld\n",use_time); return 0;}

 

执行结果:

测试一个功能 use time(us): 100,002,362

 

结论:由此可见,效果还是比较理想的。误差极小,可以忽略。

转载地址:http://idcyx.baihongyu.com/

你可能感兴趣的文章
CTOR有助于BCH石墨烯技术更上一层楼
查看>>
被遗忘的CSS
查看>>
Webpack中的sourcemap以及如何在生产和开发环境中合理的设置sourcemap的类型
查看>>
做完小程序项目、老板给我加了6k薪资~
查看>>
java工程师linux命令,这篇文章就够了
查看>>
关于React生命周期的学习
查看>>
webpack雪碧图生成
查看>>
搭建智能合约开发环境Remix IDE及使用
查看>>
Spring Cloud构建微服务架构—服务消费基础
查看>>
RAC实践采坑指北
查看>>
runtime运行时 isa指针 SEL方法选择器 IMP函数指针 Method方法 runtime消息机制 runtime的使用...
查看>>
LeetCode36.有效的数独 JavaScript
查看>>
Scrapy基本用法
查看>>
PAT A1030 动态规划
查看>>
自制一个 elasticsearch-spring-boot-starter
查看>>
软件开发学习的5大技巧,你知道吗?
查看>>
【人物志】美团前端通道主席洪磊:一位产品出身、爱焊电路板的工程师
查看>>
一份关于数据科学家应该具备的技能清单
查看>>
机器学习实战_一个完整的程序(一)
查看>>
Web框架的常用架构模式(JavaScript语言)
查看>>