【问题标题】:How can I measure the CPU time a Clojure function takes to execute?如何测量 Clojure 函数执行所需的 CPU 时间?
【发布时间】:2011-04-05 09:52:46
【问题描述】:

我见过 Clojure 的分析宏,但它们似乎都使用了经过的时间。有什么方法可以获取 CPU 时间吗?

【问题讨论】:

  • github.com/hugoduncan/criterium 能满足您的需求吗?
  • 不记得给 cpu 时间的标准,但它比仅使用 (time "..") 可靠得多
  • @jim-downing +1 参考标准

标签: clojure


【解决方案1】:

没有见过这样的解决方案。

但是,您可以使用支持管理/监控 JVM 的 java.lang.management Java 包来实现它。

特别是,ThreadMXBean.getCurrentThreadCPUTime() 听起来可以满足您的需求。

不过,通常我会尝试在一个没有争议的环境(即它可以获得 100% CPU 的环境)中运行我的基准测试,并简单地假设经过的时间大约等于 CPU 时间。然后您可以使用常用的 Clojure 基准测试工具,例如Criterium.

【讨论】:

  • 我想我可以使用 ThreadMXBean.getCurrentThreadCPUTime 尽管因为我使用的是 Clojure,它使用线程池作为 refs,这使得计算无效。这是我对 usinf 多个线程所做的正确假设吗?
  • 我认为这取决于您要测量的具体内容 - 应用程序中的特定线程或所有线程?
猜你喜欢
  • 2010-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多