为 Java 函数计算 CPU 周期

calculate CPU Cycle for Java function

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

我在 Java 中尝试了:

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

但是没有结果。

在Python,

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

timeit.default_timer()以platform-specific的方式定义默认计时器。在 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. 如果您需要 wall-clock 时间,那么 System.nanoTime() 通常比 currentTimeMillis() 更精确(绝不会更差)。
  3. ThreadMXBean.getThreadCPUTime() 可以帮助您了解给定线程使用了多少 CPU 时间。使用 ManagementFactory.getThreadMXBean() 获取 ThreadMXBean 并使用 Thread.getId() 查找您感兴趣的线程的 id。请注意,并非每个 JVM 都支持此方法!