2011-04-05 81 views
7

我已經看到Clojure的宏分析,但他們似乎都使用時間。有什麼辦法可以讓CPU花費時間嗎?如何測量Clojure函數執行的CPU時間?

+3

https://github.com/hugoduncan/criterium給你你需要什麼嗎? – 2011-04-05 11:01:00

+0

不記得給cpu時間的標準,但它比只是使用(時間「..」)更可靠 – 2011-04-05 13:57:23

+0

@ jim-downing +1對於標準的參考 – kotarak 2011-04-05 15:33:43

回答

4

沒有看到這樣的解決方案。

但是,您可以通過支持管理/監視JVM的java.lang.management Java包實現它。

特別是,ThreadMXBean.getCurrentThreadCPUTime()聽起來像它會做你想做的。

但是,通常我會嘗試在無爭議的環境(即可以獲得100%CPU的環境)中運行我的基準測試,並假設經過時間大約等於CPU時間。然後,您可以使用常用的Clojure基準測試工具,例如Criterium

+0

我想我可以使用ThreadMXBean.getCurrentThreadCPUTime雖然自從我' m使用Clojure它使用線程池的refs哪種使計算無效。這是我通過usinf多線程做出的正確假設嗎? – Zubair 2011-04-05 15:12:03

+0

我認爲這取決於你想要測量的是什麼 - 特定的線程或應用程序中的所有線程? – mikera 2011-04-05 15:14:09