【问题标题】:Why is the purportedly actual clocks/sec greater than 1,000,000 in many cases?为什么在许多情况下据称实际时钟/秒大于 1,000,000?
【发布时间】:2016-06-09 17:00:22
【问题描述】:

按照问题CLOCKS_PER_SEC not actually clocks per sec,我的多核机器上的代码相同:

CLOCKS_PER_SEC = 1000000
Actual clocks per second = 89815
Actual clocks per second = 999801
Actual clocks per second = 998912
Actual clocks per second = 999911
Actual clocks per second = 1000019
Actual clocks per second = 999997
Actual clocks per second = 1000194
Actual clocks per second = 1000182
Actual clocks per second = 1000216
Actual clocks per second = 999990

为什么在少数情况下实际时钟/秒大于 1,000,000?由于多核?我们该如何解释?

我正在硬件上运行Linux kernel 4.0.4-202 Fedora 21 Architecture: x86_64 CPU(s): 8 On-line CPU(s) list: 0-7 Thread(s) per core: 2 Model name: Intel(R) Core(TM) i7-4910MQ CPU @ 2.90GHz CPU MHz: 967.195 CPU max MHz: 3900.0000 CPU min MHz: 800.0000

【问题讨论】:

  • 您运行的是什么硬件和操作系统?
  • 硬件和操作系统详细信息已更新

标签: linux unix time


【解决方案1】:

在繁忙的系统上,正在运行的测试程序不会获得所有 CPU 能力。

因此无法保证它不会在一段时间内被暂停。如果在进程等待 CPU 时发生从一秒到下一秒的更替,则下一次 clock() 调用将发生较晚,因此出现“超过一秒”的增量。

或者,您看到的变化可能是由于clock() 调用中发生的一些舍入。

无论如何,我不会在各种系统上重现它,无论是单核还是多核。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-14
    • 2015-11-14
    • 2013-05-09
    • 1970-01-01
    • 1970-01-01
    • 2019-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多