多线程的代码编写好了,如何统计运行时间以证明多线程的优势呢?
参考:http://www.cnblogs.com/clover-toeic/p/3845210.html(clover_toeic 《Linux用户态程序计时方式详解》)
先给出一些关于时间的概念:
进程时间也称CPU时间,用以度量进程使用的中央处理器资源。进程时间以时钟滴嗒计算,通常使用三个进程时间值,即实际时间(real)、用户CPU时间(user)和系统CPU时间(sys),这一点与 time 指令一致。
1)real是从进程开始执行到完成所经历的挂钟(wall clock)时间,包括其他进程使用的时间片(time slice)和本进程耗费在阻塞(如等待I/O操作完成)上的时间。该时间对应秒表(stopwatch)直接测量。
2)user是进程执行用户态代码(内核外)耗费的CPU时间,仅统计该进程执行时实际使用的CPU时间,而不计入其他进程使用的时间片和本进程阻塞的时间。
3)sys是该进程在内核态运行所耗费的CPU时间,即内核执行系统调用所使用的CPU时间。
CPU总时间(user + sys)是CPU执行用户进程操作和内核(代表用户进程执行)系统调用所耗时间的总和,即该进程(包括其线程和子进程)所使用的实际CPU时间。若程序循环遍历数组,则增加用户CPU时间;若程序执行exec或fork等系统调用,则增加系统CPU时间。
简单来说:
依据进程