程序/进程执行时间分析(user cpu time, system cpu time, elpapsed time)

本文探讨程序执行时间的分析,包括用户CPU时间、系统CPU时间和真实时间(elpapsed time)。文章介绍了如何通过clock()、gettimeofday()、time命令和times()函数来获取这些时间,并讨论了在单核和多核环境下时间构成的差异。

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

1. 背景

近日做程序优化任务,代码不长,时间测试起来需要在for循环里加,破坏了程序执行的流水线,导致时间不准。网上查看了些相关资料,学到了一些东西,虽然对本任务没用,但对于程序/进程执行时间可加深理解。

首先,需要明白的是:

我们平时常用的测量运行时间的方法并不是那么精确的,换句话说,想精确获取程序运行时间并不是那么容易的。也许你会想,程序不就是一条条指令么,每一条指令序列都有固定执行时间,为什么不好算?真实情况下,我们的计算机并不是只运行一个程序的,进程切换,各种中断,共享的多用户,网络流量,高速缓存的访问,转移预测等,都会对计时产生影响。

这个是比较好理解的,通常实际中跑程序跑几次,每次的时间是略有差异的。那么程序的运行时间究竟是怎样的呢?

2. 执行时间

2.1 构成

程序运行时是以进程的形式,因此讨论是在进程层面。

  • 真实时间:进程从开始执行到最后结束的时间,包括阻塞 + 就绪 + 运行的时间。称为 wall clock time/墙上时钟时间/elpapsed time,是我们跑程序实际等待的时间;

  • 系统cpu时间:用户进程获得CPU资源后,在内核态的执行时间,如write,read等系统调用;

  • 用户cpu时间:用户进程获得CPU资源后,在用户态执行的时间,主要

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值