【Code Tools】Java微基準測試工具JMH之入門篇

1、JMH是什麼java

  JMH是一個Java工具,用於構建、運行和分析用Java和其餘語言編寫的以JVM爲目標的 nano/micro/milli/macro 基準測試。

maven

2、基本注意事項工具

1)運行JMH基準測試的推薦方法是使用Maven設置一個獨立的項目,該項目依賴於應用程序的jar文件。這種方法是首選的,以確保基準被正確初始化併產生可靠的結果。測試

2)咱們也能夠在現有項目中運行基準測試,甚至能夠在IDE中運行基準測試,可是設置更加複雜,結果也不那麼可靠。
3)在全部狀況下,使用JMH的關鍵是使註釋或字節碼處理器可以生成合成的基準代碼。Maven archetypes(原型)是用於啓用此功能的主要機制。咱們強烈建議新用戶使用archetype設置正確的環境。

3、經過Command Line(命令行)來建立JMH測試項目
1)創建基準測試項目ui

執行下面的maven命令將生成一個新的JMH-driven項目spa

$ mvn archetype:generate \ -DinteractiveMode=false \ -DarchetypeGroupId=org.openjdk.jmh \ -DarchetypeArtifactId=jmh-java-benchmark-archetype \ -DgroupId=org.sample \ -DartifactId=test \ -Dversion=1.0

2)Building項目命令行

$ cd test/ $ mvn clean install

3)運行該項目code

java -jar target/benchmarks.jar

使用-h運行,查看可用的命令行選項。blog

java -jar target/benchmarks.jar -h

該項目目前沒有任何測試代碼,但能夠看到運行效果,代碼以下rem

public class MyBenchmark { public MyBenchmark() { } @Benchmark public void testMethod() {
    //此處添加測試代碼 } }

運行結果以下:

➜  test java -jar target/benchmarks.jar # VM invoker: /Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home/jre/bin/java # VM options: <none> # Warmup: 20 iterations, 1 s each # Measurement: 20 iterations, 1 s each # Threads: 1 thread, will synchronize iterations # Benchmark mode: Throughput, ops/time # Benchmark: org.sample.MyBenchmark.testMethod # Run progress: 0.00% complete, ETA 00:06:40 # Fork: 1 of 10 # Warmup Iteration 1: 3019163919.102 ops/s # Warmup Iteration 2: 3040718111.236 ops/s # Warmup Iteration 3: 3052170687.842 ops/s # Warmup Iteration 4: 3063995970.025 ops/s

 

 

注:在處理大型項目時,一般將基準保存在單獨的子項目中,而後經過一般的構建依賴關係依賴於測試的模塊。

相關文章
相關標籤/搜索