[英]Understanding the results from the time command
我正在依次使用/usr/bin/time
命令运行一个程序,并且得到以下结果:
Invocation 1
real 0m0.044s
user 0m0.000s
sys 0m0.041s
Invocation 2
real 0m0.037s
user 0m0.002s
sys 0m0.032s
Invocation 3
real 0m0.033s
user 0m0.001s
sys 0m0.029s
这些微小变化的原因可能是什么?
这是否表明标准I / O库的缓冲策略是成功的?
执行时间将在运行程序的不同时间改变。 允许操作系统按计划安排程序运行时间和等待时间。 大多数时候,尤其是在以用户为中心的操作系统(Windows,Mac,Linux)上,它们试图使事情变得公平,从而使程序不会被完全遗忘。 但是,这并不是说时间表不会在每次运行程序时都更改。
例如,也许您是第一次运行它,并且只有一个(极不可能)其他进程需要同时运行。 您的程序将使更多时隙更靠近在一起。 然后,您再次运行程序,但是这次也有10个程序在运行。 这意味着您的代码可能突然变得比上一次执行的时间大1/10(十分之一)。
可悲的是,在大多数情况下,当您查看执行时间时,会在程序开始运行之前(第一次)获得时间戳,然后在程序完成后再次获得时间戳。 这意味着从第一次计划开始到完成为止的整个时间。
因此,如果以1秒的间隔为其分配了10个插槽,则该程序将花费大约10秒钟的时间执行。
就是说,如果您说程序运行100次,并在所有执行中花费平均经过的时间,您将开始朝着程序的实际运行时间迈进。 数据点越多(例如,将其运行1000次而不是100次),则越接近正确答案。 当然,由于它们的调度算法可能略有不同,因此它们也可以基于OS进行更改。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.