迭代的時機是什麼意思?爲什麼我們必須修復每個測量迭代的持續時間?
@Measurement(iterations = 50, time = 2)
如果測量的時間是固定的,如果測量的迭代需要2秒以上的時間,迭代將會停止?如果那是真的,這對測量有什麼影響。
迭代的時機是什麼意思?爲什麼我們必須修復每個測量迭代的持續時間?
@Measurement(iterations = 50, time = 2)
如果測量的時間是固定的,如果測量的迭代需要2秒以上的時間,迭代將會停止?如果那是真的,這對測量有什麼影響。
該問題的直接答案是:「我們必須提供迭代時間(或依賴於默認的迭代時間),否則迭代將永不停止」。根據基準模式,迭代時間的含義可能不同。例如,Javadoc says:
/**
* <p>Throughput: operations per unit of time.</p>
*
* <p>Runs by continuously calling {@link Benchmark} methods,
* counting the total throughput over all worker threads.
* This mode is time-based, and it will run until the iteration
* time expires.</p>
*/
Throughput("thrpt", "Throughput, ops/time"),
有沒有辦法阻止在Java中不合作的執行,短的查殺VM。 (中斷線程需要合作:應該檢查中斷)。因此,如果@Benchmark
調用需要比所請求的迭代時間更長的時間,除了等待它之外,我們別無選擇。
允許您提供實際的測試階段參數。您可以指定迭代次數,每次迭代運行多長時間以及迭代中的測試調用次數(通常與@BenchmarkMode(Mode.SingleShotTime)一起使用,以測量一組操作的代價 - 而不是使用循環)。
如果您要引用文檔,請明確說明您正在做什麼。 (並不是說我認爲它足以回答這個問題,它自己。) – 2015-04-01 12:56:03
@JonSkeet謝謝,是的確定... – 2015-04-01 12:57:04
此外,java-performance.info是* NOT *是JMH的權威性文檔源,應該是如此標記。引用Javadocs作爲「文檔」是很好的。 – 2015-04-01 13:57:16