如果我们看一下源代码,为clock()
Mac OS X上,我们可以看到它使用的实施getrusage
,并读取ru_utime + ru_stime
。这两个字段测量进程(或系统,代表进程)使用的CPU时间。这意味着,如果usleep
(或fgets
)导致OS交换不同的程序以执行,直到发生某种情况,那么经过的任何实时时间(也称为“挂历时间”,如“挂钟”中所述)都不会计入该值可以clock()
在Mac OS X上返回。您可能可以在Linux中进行挖掘并找到类似的东西。
但是,在Windows上,clock()
返回自该过程开始以来经过的墙时间。
在纯C语言中,我不知道OS X,Linux和Windows上可用的函数将以亚秒级的精度返回时间(time.h相当有限)。你必须GetSystemTimeAsFileTime
在Windows上,将返回你时间为100ns片,gettimeofday
从BSD,将返回时间微秒精度。
如果您可以接受第二精度,则可以使用time(NULL)
。
如果选择C ++,则可以使用其中的一个时钟std::chrono
来获得所需的精度。