在命令行中使用“时间”时,“系统时间”是什么


10

我曾经在Ubuntu 14.04的标准终端上timePerl脚本计时。

读过real time是秒表时间;从用户启动程序直到程​​序终止,我一直是用户使用的时间。但我没有得到什么usersys时间。time至少可以说,手册页上含糊不清。

尽管很明显real时间是分开的usersys但不清楚它们代表什么。

在我的脚本中,我正在将基准测试[1]与C ++和Perl进行对比,以了解它们之间的区别,并且我想知道我实际上正在获取什么数据。输出示例为:

real    0m24.198s
user    0m23.120s
sys     0m1.030s

有人可以解释一下默认的时间格式告诉用户吗?我是Linux的新手,所以请不要承担太多。

[1]有趣的是,尽管C ++在real时间方面比我的基准测试中的Perl快得多,但sys时间差别不大,因为C ++实际使用的sys时间比Perl多。这就是为什么我想知道它们的意思


Answers:


15

来自维基百科

  • 用户时间与系统时间

首先,“用户CPU时间”一词可能会引起误解。需要明确的是,总CPU时间是指一个CPU花费在对某个程序执行某些操作上的时间量和CPU花费在执行该系统代表该程序对内核进行调用上的时间量的总和。当程序循环访问数组时,它正在累积用户CPU时间。相反,当程序执行诸如exec或fork的系统调用时,它正在累积系统CPU时间。

  • 实时与CPU时间

在本文中,术语“实时”是指经过的“挂钟”时间,例如使用秒表。总的CPU时间(用户时间+系统时间)可能大于或小于该值。因为程序可能要花一些时间等待而根本不执行(无论是在用户模式还是在系统模式下),所以实际时间可能大于总CPU时间。因为程序可能会派生将其CPU时间(用户和sys)都添加到time命令报告的值的子代,所以总CPU时间可能大于实际时间。


1
我不明白如何无法找到该维基百科文章。谢谢。
Alrekr 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.