C:Windows和其他 *** 作系统中clock()的不同实现?

C:Windows和其他 *** 作系统中clock()的不同实现?,第1张

C:Windows和其他 *** 作系统中clock()的不同实现?

如果我们看一下源代码,为

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
来获得所需的精度。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5009778.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-14

发表评论

登录后才能评论

评论列表(0条)

保存