【问题标题】:calculate CPU Cycle for Java function计算 Java 函数的 CPU 周期
【发布时间】:2017-02-04 10:57:20
【问题描述】:

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

我在 Java 中尝试过:

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

但没有结果。

【问题讨论】:

  • 这不是一个无关紧要的话题。以下是 Java 的一个很好的起点:stackoverflow.com/questions/504103/…
  • 在 Java 中执行任何操作所需的时间因许多因素而异。相同的函数可能需要 50 毫秒或根本不需要时间,具体取决于它的作用和运行方式。

标签: java python cpu cycle


【解决方案1】:

在 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 都支持此方法!

【讨论】:

    猜你喜欢
    • 2018-02-11
    • 2011-04-23
    • 2012-12-06
    • 1970-01-01
    • 2020-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多