关于sys-和usertime,Linux中的“time”命令更准确等效?
作者:互联网
我遇到以下情况:
我想确定(PHP和C)代码的小片段的sys-和usertime.显然,我可以在Linux中使用“时间”二进制文件,但鉴于这些片段运行得如此之快,“时间”的正常(甚至是冗长的)输出不足以达到我的目的. “时间”的准确度达到毫秒,而我需要微秒.甚至更好:纳秒.
有人能指出我可以为我做这件事的软件吗?我找到了walltime的东西,但我感兴趣的是系统和使用时间.
提前致谢!
顺便说一句:我正在运行Ubuntu 10.10 64位
解决方法:
没有任何方法可以为你提供任何与time命令相同的sys或usertime,它会更加精确. time命令的大部分表面精度都是错误的精度.
处理这个问题的技巧是将这些代码片段放在紧密的循环中,这些循环会调用它们数千次,并确定给定循环从中获取多长时间.即便如此,你应该重复几次实验并选择最短的时间.
这是一个类比,描述为什么精度是错误的,我的意思是什么.假设有人使用秒表通过在比赛开始时手动按下按钮以及定时人员越过终点线来为比赛计时.据说你的秒表准确到100秒.但是这种精确度是错误的,因为它击中按钮的人的反应时间引起的误差相形见绌.
这非常类似于时间为什么时间给你精确度,据说是微秒,但实际上精确度要低得多.在任何给定的时间点,任何给定的系统都会发生很多事情,所有这些都会在计算中引入错误.来自网络IO或磁盘IO的中断,用于运行调度程序的计时器中断,其他进程对L1或L2 CPU高速缓存执行的操作.这一切都加起来.
使用类似于在模拟CPU上运行程序的valgrind可以为您提供看似精确到CPU周期数的数字.但这种精确度并不是你在现实世界中所经历的.最好使用我最初描述的技术,并接受这些时间可能是模糊的.
标签:linux,time,systemtime 来源: https://codeday.me/bug/20190630/1341044.html