1

clock()在运行 32 位版本的 Debian 6.0.3 的机器上遇到问题。它似乎总是回来0。使用此示例程序时,我得到以下输出:

Calculating...
The number of primes lower than 100,000 is: 9592
It took me 0 clicks (0.000000 seconds).

但是,在 VMWare 虚拟机中运行的同一系统会产生预期的输出:

It took me 60000 clicks (0.060000 seconds).

这里有什么问题?有没有更好的便携式方法来对主机的生成代码和处理能力进行基准测试?(我需要这个来进行快速而肮脏的 bcrypt 基准测试)。

4

1 回答 1

1

也许你的机器太快了,clock分辨率只有几微秒。

仅在 C 中没有其他可移植的方法可以做到这一点,即使这也可能会受到质疑,因为大型软件供应商clock返回的是挂钟时间而不是 CPU 时间。

由于您使用的是 POSIX 系统,我建议使用提供的工具,即clock_gettime使用时钟CLOCK_PROCESS_CPUTIME_IDCLOCK_THREAD_CPUTIME_ID. 现代 Linux 很好地支持它们。

如果您需要一个适用于所有三个(Linux、Windows、Mac)的函数,请使用 POSIX 版本作为默认版本,并为 Windows 和 Mac 创建后备。两者似乎都不符合标准;Windows 甚至不符合 C 标准,Mac 也不符合现代 POSIX。这使您可以维护两个异常代码,我希望这不会太难。

于 2013-07-29T07:09:17.100 回答