一、clock()函数:老牌选手,但已经过时了
clock()函数是C语言中用来获取程序运行时间的经典函数。它返回的是一个相对时间,单位是秒。不过,clock()函数有几个问题:
- 超过一个小时就会溢出。
- 没有考虑CPU被子进程使用的情况。
- 不能区分用户空间和内核空间。
所以,在Linux系统上,clock()函数已经没有太大的意义了。
二、times()函数:更详细的时间统计
times()函数比clock()函数更强大,它不仅可以获取程序运行时间,还可以获取用户代码和内核代码的执行时间。它使用一个tms结构体来存储这些信息。
三、clock_gettime()函数:更精确的时间测量
clock_gettime()函数是POSIX标准中新增的函数,它提供了更高的精度。它使用timespec结构体来存储时间,单位是纳秒。
四、gettimeofday()函数:获取当前时间
gettimeofday()函数可以获取当前系统的时间,是一个绝对值。它使用timeval结构体来存储时间,单位是微秒。
五、四种函数的比较
以下是四种函数的一些比较:
- clock()和times()的精确度是10毫秒。
- gettimeofday()的精确度是微秒。
- clock_gettime()的精确度是纳秒。
六、内核时钟
Linux系统的内核时钟周期默认是100HZ,但现在最新的内核时钟周期默认为250HZ。
七、为应用程序计时
使用time程序可以监视任何命令或脚本占用CPU的情况。
——陆砚码 整理于思享编程网(www.sxgpb.com)
