2017-02-04 41 views
0

我想知道如何计算Java或Python中函数的CPU周期。为Java函数计算CPU周期

我在Java中尝试了用:

(OperatingSystemMXBean)ManagementFactory.getOperatingSystemMXBean(); osbean.getProcessCpuTime();

但没有结果。

+2

这不是一个小问题。以下是Java的一个很好的起点:http://stackoverflow.com/questions/504103/how-do-i-write-a-correct-micro-benchmark-in-java – NPE

+0

在Java中执行任何操作所需的时间Java因许多因素而异。相同的功能可能需要50毫秒或根本不需要时间,具体取决于它的功能和运行方式。 –

回答

2

在Python

使用timeit.default_timer();它使用平台的最准确的选择。在Ubuntu中,这将使用time.time()来代替。

timeit.default_timer()以平台特定的方式定义默认计时器。在Windows上,time.clock()的粒度为微秒,但time.time()的粒度为1/60th。在Unix上,time.clock()具有第二个粒度的1/100th,并且time.time()更精确。在任一平台上,default_timer()都会测量挂钟时间,而不是CPU时间。这意味着在同一台计算机上运行的其他进程可能会影响计时。

在JAVA

  1. System.currentTimeMillis()将只测量wall-clock time,从来没有CPU时间。
  2. 如果您需要挂钟时间,那么System.nanoTime()通常比currentTimeMillis()更精确(且从不差)。
  3. ThreadMXBean.getThreadCPUTime()可以帮助您找出给定线程已使用多少CPU时间。使用ManagementFactory.getThreadMXBean()可以获得ThreadMXBean和Thread.getId()以找到您感兴趣的线程的id。请注意,每个JVM都不需要支持此方法!