Linux time命令输出中真实的、用户和系统的含义[重复]

9cbw7uwe  于 2023-10-16  发布在  Linux
关注(0)|答案(1)|浏览(88)

此问题已在此处有答案

What do 'real', 'user' and 'sys' mean in the output of time(1)?(8个回答)
7年前关闭。

$ time ./Test 

real    0m2.906s
user    0m2.887s
sys     0m0.017s

下面是程序代码:

#include <iostream>
#include <map>

void func_a() {
    std::map<int, int> m;
    for (unsigned int i = 0; i < 10000; i++) {
        m.insert(std::pair<int, int>(i, i));
    }
}

void func_b() {
    std::map<int, int> m;
    for (unsigned int i = 0; i < 1000000; i++) {
        m.insert(std::pair<int, int>(i, i));
    }
}

int main() {
    func_a();
    func_b();
    return 0;
}
7eumitmz

7eumitmz1#

如果你看一下manpageman time),它说:
time命令使用给定的参数运行指定的程序命令。当命令完成时,time向标准输出写入一条消息,给出有关此程序运行的定时统计信息。这些统计信息包括(i)调用和终止之间经过的真实的时间,(ii)用户CPU时间(times(2)返回的结构tms中tms_utime和tms_cutime值的总和),以及(iii)系统CPU时间(times(2)返回的结构tms中tms_stime和tms_cstime值的总和)。
基本上,user时间是程序在CPU上运行的时间,sys时间是程序等待操作系统执行任务的时间。如果你对基准测试感兴趣,user + sys是一个很好的指标。real可能会受到其他正在运行的进程的影响,并且不太一致。

相关问题