跳转到主内容
思享编程网:思考分享,玩转编程世界!

clock()、time()、clock_gettime()和gettimeofday(),这四个时间函数到底怎么用?区别又在哪里?

一、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)

相关文章