第九章 测量程序执行时间
9.1 计算机系统上的时间流
9.1.1 进程调度和计时器中断
计算机有一个外部计时器,它周期性地向处理器发送中断信号,操作系统调度程序可以选择继续执行当前进程,或者切换到另一个进程。典型的周期时1~10ms。
9.1.2 从应用程序的角度看时间
从应用程序角度,把时间流看成是活动的和不活动的两种时间的交替。通过抓trace可以图形化的观察程序运行状态
9.2 通过 间隔计数(interval counting)来测量时间
操作系统也用计时器(timer)来记录每个机场使用的累计时间,这种信息提供的是对程序执行时间不那么准确的测量值。
9.2.1 操作
操作系统维护着每个进程使用的用户时间量和系统时间量的计数值,当计时器中断发生时,操作系统会确定哪个进程是活动的,并且对那个进程的一个计数值增加计时器间隔时间。如果系统是在内核模式执行的,那么就增加系统时间,否则增加用户时间。
9.2.2 读进程的计时器
在Unix shell中,可以在命令行前加“time”来测量命令的执行时间。
unix> time ./helloworld
执行完成后,会打印出总结运行时间的数据:
前两个是用户和系统时间的秒数。注意这两个数字的小数点第三位都是0.计时器间隔为10ms,所有的计时都是1%秒的倍数。
第三个数字是总经过的时间,以分钟和秒的形式表示。系统和用户时间加起来是2.49s,比总经过的时间6.52s的一半还少,说明处理