我在运行32位Debian 6.0.3版本的计算机上遇到clock()
问题。似乎总是返回0
。使用this example program时,我得到以下输出:
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基准测试)。
答案 0 :(得分:1)
也许你的机器速度太快,clock
的分辨率为微秒。
没有其他可移植的方法可以单独在C中执行此操作,甚至这可能会受到质疑,因为大型软件供应商已经clock
返回挂钟时间而不是cpu时间。
由于您使用POSIX系统,我建议使用提供的工具,即clock_gettime
,其时钟为CLOCK_PROCESS_CPUTIME_ID
或CLOCK_THREAD_CPUTIME_ID
。现代Linux很好地支持它们。
如果您需要适用于所有这三种功能的功能(Linux,Windows,Mac),请使用POSIX版本作为默认设置,并为Windows和Mac创建回退。两者似乎都不符合标准; Windows甚至不符合C标准,而Mac则不符合现代POSIX。这使你保持两个异常代码,这是不会太困难的,我希望。