Linux time 命令的输出理解

本文详细介绍了Linux中的time命令,解释了如何使用它来测量程序的运行时间、用户态CPU时间和系统态CPU时间,并探讨了不同状态下的CPU时间含义及其对程序性能的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux中time命令,经常用来计算某个程序的运行耗时,用户态CPU耗时,系统态CPU耗时。

例如:

$ time test

real 4m26.226s
user 6m15.008s
sys 1m2.479s

  • real:表示test整个程序的运行耗时。
  • user:表示test程序运行在用户态的cpu时间。
  • sys:表示test程序运行在核心态的cpu时间。

    • 核心态:在内核态,代码拥有完全的,不受任何限制的访问底层硬件的能力。可以执行任意的CPU指令,访问任意的内存地址。内核态通常情况下,都是为那些最底层的,有操作系统提供的,可信可靠的代码来运行的。内核态的代码崩溃将是灾难性的,会影响到整个系统。
    • 用户态:在用户态,代码不具备直接访问硬件或者访问内存的能力,而必须借助操作系统提供的可靠的,底层的APIs来访问硬件或者内存。由于这种隔离性带来的保护作用,用户态的代码崩溃,系统是可以恢复的。我们大多数的代码都是运行在用户态的。

CPU总时间(user+sys)是CPU执行用户进程操作和内核系统调用所耗时间的综合,即该进程(包括其线程和子进程)锁使用的实际CPU时间。若程序循环遍历数组,则增加用户CPU时间;

  • Real < CPU,表明进程为计算密集型(CPU bound),利用多核处理器的并行执行优势;
  • Real ≈ CPU,表明进程为计算密集型(CPU
    bound),未并行执行;
  • Real > CPU,表明进程为I/O密集型(I/O bound),多核并行执行优势并不明显。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值