我使用在 Ubuntu 14.04 的标准终端上time计时Perl脚本。
我读过那real time是秒表时间;作为用户,我花时间查看从启动程序到终止的程序。但我不明白是什么user或sys时间是什么。time至少可以说,手册页是模糊的。
虽然有点清楚real时间是分开的user,sys但不清楚它们代表什么。
在我的脚本中,我正在对 C++ 和 Perl 进行基准测试 [1] 以查看差异,并且我想知道我实际获得了哪些数据。一个示例输出是:
real 0m24.198s
user 0m23.120s
sys 0m1.030s
Run Code Online (Sandbox Code Playgroud)
有人可以详细说明默认的时间格式告诉用户什么吗?我是 Linux 的新手,所以请不要假设太多。
[1] 有趣的是,虽然在我的基准测试中,C++ 在real时间方面比 Perl 快得多,但sys时间差别不大,实际上 C++ 使用的sys时间比 Perl 多。这就是为什么我想知道它们是什么意思
Kon*_*nos 16
来自维基百科:
- 用户时间与系统时间
术语“用户 CPU 时间”起初可能有点误导。需要明确的是,总 CPU 时间是 CPU 为程序执行某些操作所花费的时间和 CPU 代表程序执行内核系统调用所花费的时间的组合。当程序循环遍历数组时,它正在累积用户 CPU 时间。相反,当程序执行诸如 exec 或 fork 之类的系统调用时,它正在积累系统 CPU 时间。
- 实时与 CPU 时间
在此上下文中,术语“实时”是指经过的“挂钟”时间,例如使用秒表。总 CPU 时间(用户时间 + 系统时间)可能大于或小于该值。因为一个程序可能会花费一些时间等待并且根本不执行(无论是在用户模式还是系统模式下),所以实际时间可能大于总 CPU 时间。因为程序可能会 fork 其 CPU 时间(用户和 sys)被添加到 time 命令报告的值的孩子,所以总 CPU 时间可能大于实际时间。