2016-08-24 59 views
1

我無法弄清楚如何使用JMH在Intellij中完成Scala程序的基準測試。如何在Intellij中用JMH替換Scala?

這是我到目前爲止已經完成:

新增的江鈴控股有限公司SBT-插件

// build.sbt 
name := "Project" 
version := "1.0" 
scalaVersion := "2.11.8" 
enablePlugins(JmhPlugin) 

// project/plugins.sbt 
logLevel := Level.Warn 
addSbtPlugin("pl.project13.scala" % "sbt-jmh" % "0.2.10") 

這裏是plugin's website

創建一個標杆類

// src/main/scala/MyBenchmark.scala 
import org.openjdk.jmh.annotations.Benchmark 

class MyBenchmark { 

    @Benchmark 
    def test(): Unit = println("test") 

} 

創建了一個SBT-任務的IntelliJ

Intellij Run Configuration

但在運行任務後,我剛得到一個異常:

Annotation generator had thrown the exception. 
java.lang.NullPointerException 
    at org.openjdk.jmh.generators.reflection.RFClassInfo.getPackageName(RFClassInfo.java:51) 
    at org.openjdk.jmh.generators.core.BenchmarkGenerator.validateBenchmark(BenchmarkGenerator.java:243) 
    at org.openjdk.jmh.generators.core.BenchmarkGenerator.generate(BenchmarkGenerator.java:90) 
    .... 

我在做什麼錯?

回答

1

嘗試在基準類中添加軟件包名稱

因爲JMH抱怨沒有找到包名。 org.openjdk.jmh.generators.reflection.RFClassInfo。 getPackageName(RFClassInfo.java:51)

你應該添加一行:

package your.path;