如何解释“time”命令的输出?

f-z*_*z-N 4 linux time

 time a.out 
 106.130u 0.000s 1:46.28 99.8%   0+0k 0+0io 83pf+0w
Run Code Online (Sandbox Code Playgroud)

根据我对man页面的理解:

  • 第一个值是自代码执行开始和结束以来的时间,
  • 第二个值是在用户模式下花费的时间
  • 第三个是内核模式

99.8% 是否表示在内核模式下花费的时间?

还有,这说明什么?

0+0k 0+0io 83pf+0w .
Run Code Online (Sandbox Code Playgroud)

程序的执行时间肯定超过一分钟——那为什么第一个值这么小呢?

Pis*_*ing 5

从联机帮助页:

默认格式为:

    %Uuser %Ssystem %Eelapsed %PCPU (%Xtext+%Ddata %Mmax)k
    %Iinputs+%Ooutputs (%Fmajor+%Rminor)pagefaults %Wswaps
Run Code Online (Sandbox Code Playgroud)

因此,在用户空间花费了 106 秒,在内核空间花费了 0 秒,“真实”时间过去了 1 分 46 秒。

至于“为什么第一个值这么小” - 事实并非如此。请注意,106 秒 == 60 秒 + 46 秒 == 1 分 46 秒,这是经过的时间。我看不出有什么不同。