Как я могу запустить JMH с Дотти? - PullRequest
0 голосов
/ 04 апреля 2020

Я пытаюсь настроить бенчмаркинг JMH с проектом Dotty и sbt (я использую sbt-jmh 0.3.7) и Dotty 0.23-RC1.

Я запускаю с этим cmd:

sbt -Dsbt.override.build.repos=true "scalajack_benchmarks/jmh:run -f 1 -t 1 -wi 5 -i 15"

Я получаю эту ошибку:

[info] running (fork) org.openjdk.jmh.Main -f 1 -t 1 -wi 5 -i 15
[error] WARNING: An illegal reflective access operation has occurred
[error] WARNING: Illegal reflective access by org.openjdk.jmh.util.Utils (file:/private/var/folders/ph/ccz4n1qs62n0bn8mqdg94gsw0000gp/T/sbt_fffc0906/target/e752ff01/c82dacdf/jmh-core-1.21.jar) to field java.io.PrintStream.charOut
[error] WARNING: Please consider reporting this to the maintainers of org.openjdk.jmh.util.Utils
[error] WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
[error] WARNING: All illegal access operations will be denied in a future release
[error] Exception in thread "main" java.lang.RuntimeException: ERROR: Unable to find the resource: /META-INF/BenchmarkList
[error]     at org.openjdk.jmh.runner.AbstractResourceReader.getReaders(AbstractResourceReader.java:98)
[error]     at org.openjdk.jmh.runner.BenchmarkList.find(BenchmarkList.java:122)
[error]     at org.openjdk.jmh.runner.Runner.internalRun(Runner.java:263)
[error]     at org.openjdk.jmh.runner.Runner.run(Runner.java:209)
[error]     at org.openjdk.jmh.Main.main(Main.java:71)
[error] Nonzero exit code returned from runner: 1

1 Ответ

0 голосов
/ 04 апреля 2020

Кажется, работает на моей машине после выполнения этих шагов

  1. sbt new lampepfl/dotty.g8
  2. Добавить в project/plugins.sbt
    addSbtPlugin("pl.project13.scala" % "sbt-jmh" % "0.3.7")
    
  3. Добавить в build.sbt
    enablePlugins(JmhPlugin)
    
  4. Добавить к src/main/scala/bench/So61014254.scala

    package bench
    
    import org.openjdk.jmh.annotations._
    
    @State(Scope.Benchmark)
    @BenchmarkMode(Array(Mode.Throughput))
    class So61014254 {
      @Benchmark def seqColonPlus: Seq[Int] = Seq.empty :+ 3
      @Benchmark def seqNewBuilder: Seq[Int] = (Seq.newBuilder += 3).result()
    }
    
  5. Выполнить с sbt "jmh:run -i 5 -wi 5 -f 2 -t 1 bench.So61014254"

Также sbt-jmh используется официальный дотти репо .

...