Linux time命令输出中real、user和sys的含义

22 浏览
0 Comments

Linux time命令输出中real、user和sys的含义

以下是程序代码:

#include 
#include 
void func_a() {
    std::map m;
    for (unsigned int i = 0; i < 10000; i++) {
        m.insert(std::pair(i, i));
    }
}
void func_b() {
    std::map m;
    for (unsigned int i = 0; i < 1000000; i++) {
        m.insert(std::pair(i, i));
    }
}
int main() {
    func_a();
    func_b();
    return 0;
}

以下是程序运行的时间:

真实时间    0分2.906秒
用户时间    0分2.887秒
系统时间    0分0.017秒

0
0 Comments

关于Linux时间命令输出中real、user和sys的含义

在使用Linux的时间命令时,经常会看到输出中包含real、user和sys这三个参数。那么这些参数究竟代表着什么含义呢?

根据Linux的man手册的介绍,时间命令运行指定的程序命令并提供关于程序运行的时间统计信息。这些统计信息包括:

1. real时间:指的是从程序开始运行到结束的实际耗时时间,也即墙钟时间。

2. user时间:指的是程序在CPU上运行的时间,也即用户态时间。

3. sys时间:指的是程序等待操作系统执行任务的时间,也即内核态时间。

简单来说,user时间表示程序在CPU上运行的时间,sys时间表示程序等待操作系统执行任务的时间。如果你对程序的性能测试感兴趣,可以使用user+sys时间作为参考。而real时间受其他正在运行的进程的影响,因此更不稳定。

当我们在使用时间命令时,可能会遇到一些问题。有时候我们可能会发现,输出中并没有显示real、user和sys时间,而是显示了其他的一些信息。这是因为在Linux中,time命令有两种不同的实现方式,一种是Bash内置的time命令,另一种是/usr/bin/time命令。这两种实现方式输出的格式是不同的,所以可能会导致输出不同的结果。

解决这个问题的方法很简单,只需要在使用时间命令时,明确指定使用哪一种实现方式即可。如果想要使用Bash内置的time命令,可以在命令前加上关键字builtin,如下所示:

如果想要使用/usr/bin/time命令,可以在命令前加上/usr/bin/,如下所示:

通过明确指定使用哪一种实现方式,就可以解决输出不同结果的问题。

real、user和sys参数在Linux时间命令输出中分别代表了程序运行的实际耗时时间、用户态时间和内核态时间。了解这些参数的含义,可以帮助我们更好地理解和分析程序的运行情况。在使用时间命令时,如果遇到输出不同结果的问题,只需要明确指定使用哪一种实现方式即可解决。

0