Comments (11)
Do'h, I meant to use 0.1.14
, not 0.1.4
.
from sbt-jmh.
😄 Yup, you want 0.1.14
:-)
// Thanks for the nice report though, if it was a bug that would have been very helpful :-)
from sbt-jmh.
I blame my fat-fingered-ness on the circles I'm circling trying to plug https://github.com/biboudis/jmh-profilers into my profiles.
Using the pre-built binary as instructed in the README, I'm unable to get past the "Please unlock commercial features" nag, even though I passed -XX:+UnlockCommercialFeatures
to the SBT jvm and to the sbt-jmh jvmArgs
.
I rebuilt that locally, but then needed to update it some API changes in JMH. But then the generated code still fails to compile with:
[error] }
[info] Benchmark entry {'scala.tools.nsc.JavacBenchmark.bench', Throughput, {}} already exists, overwriting
[error] (jmh:compile) javac returned nonzero exit code
But the javac error messages are swallowed.
So I'm building sbt-jmh
locally to see if I can get those displayed...
from sbt-jmh.
JMH itself forks JVMs, that's probably the problem - not sure if we're properly passing jvm options to those - probably not. I can look into these things a bit later today, need to look at conductr things now. Let me know if you find anything more so I can continue from where you get to in my evening perhaps.
(Reopened and renamed, I hope the title makes sense :-))
from sbt-jmh.
At the top of my problem stack, I think the problem with jmh:compile
failing when the jmh-profilers
plugin is on the classpath is related to duplicate classes being created.
I set a breakpoint in the spot in SBT where javac
is called, and then reconstructed the command line:
// args.txt
-d
/Users/jason/code/scala-jmh-suite/target/scala-2.11/classes
-classpath
/Users/jason/code/scala-jmh-suite/target/scala-2.11/classes:/Users/jason/.ivy2/cache/org.scala-lang/scala-compiler/jars/scala-compiler-2.11.6.jar:/Users/jason/.ivy2/cache/org.scala-lang/scala-library/jars/scala-library-2.11.6.jar:/Users/jason/.ivy2/cache/org.scala-lang/scala-reflect/jars/scala-reflect-2.11.6.jar:/Users/jason/.ivy2/cache/org.scala-lang.modules/scala-xml_2.11/bundles/scala-xml_2.11-1.0.3.jar:/Users/jason/.ivy2/cache/org.scala-lang.modules/scala-parser-combinators_2.11/bundles/scala-parser-combinators_2.11-1.0.3.jar:/Users/jason/.ivy2/cache/org.openjdk.jmh/jmh-core/jars/jmh-core-1.8.jar:/Users/jason/.ivy2/cache/net.sf.jopt-simple/jopt-simple/jars/jopt-simple-4.6.jar:/Users/jason/.ivy2/cache/org.apache.commons/commons-math3/jars/commons-math3-3.2.jar:/Users/jason/.ivy2/cache/org.openjdk.jmh/jmh-generator-bytecode/jars/jmh-generator-bytecode-1.8.jar:/Users/jason/.ivy2/cache/org.openjdk.jmh/jmh-generator-reflection/jars/jmh-generator-reflection-1.8.jar:/Users/jason/.ivy2/cache/org.openjdk.jmh/jmh-generator-asm/jars/jmh-generator-asm-1.8.jar:/Users/jason/.ivy2/cache/org.ow2.asm/asm/jars/asm-5.0.3.jar:/Users/jason/.m2/repository/com/github/biboudis/jmh-profilers/0.1.3-SNAPSHOT/jmh-profilers-0.1.3-SNAPSHOT.jar:/Users/jason/.ivy2/cache/org.openjdk.jmh/jmh-generator-annprocess/jars/jmh-generator-annprocess-1.8.jar:/Users/jason/.ivy2/cache/org.scala-lang/scala-library/jars/scala-library-2.11.6.jar
/Users/jason/code/scala-jmh-suite/src/main/scala/scala/tools/nsc/JavacBenchmark.java
/Users/jason/code/scala-jmh-suite/target/scala-2.11/generated-sources/jmh/org/openjdk/jmh/infra/generated/Blackhole_jmh.java
/Users/jason/code/scala-jmh-suite/target/scala-2.11/generated-sources/jmh/org/openjdk/jmh/infra/generated/Blackhole_jmh_B1.java
/Users/jason/code/scala-jmh-suite/target/scala-2.11/generated-sources/jmh/org/openjdk/jmh/infra/generated/Blackhole_jmh_B2.java
/Users/jason/code/scala-jmh-suite/target/scala-2.11/generated-sources/jmh/org/openjdk/jmh/infra/generated/Blackhole_jmh_B3.java
/Users/jason/code/scala-jmh-suite/target/scala-2.11/generated-sources/jmh/org/openjdk/jmh/samples/generated/JMHSample_01_HelloWorld_jmh.java
/Users/jason/code/scala-jmh-suite/target/scala-2.11/generated-sources/jmh/org/openjdk/jmh/samples/generated/JMHSample_01_HelloWorld_jmh_B1.java
/Users/jason/code/scala-jmh-suite/target/scala-2.11/generated-sources/jmh/org/openjdk/jmh/samples/generated/JMHSample_01_HelloWorld_jmh_B2.java
/Users/jason/code/scala-jmh-suite/target/scala-2.11/generated-sources/jmh/org/openjdk/jmh/samples/generated/JMHSample_01_HelloWorld_jmh_B3.java
/Users/jason/code/scala-jmh-suite/target/scala-2.11/generated-sources/jmh/org/openjdk/jmh/samples/generated/JMHSample_01_HelloWorld_wellHelloThere.java
/Users/jason/code/scala-jmh-suite/target/scala-2.11/generated-sources/jmh/scala/tools/nsc/generated/CompilerBenchmark_compile.java
/Users/jason/code/scala-jmh-suite/target/scala-2.11/generated-sources/jmh/scala/tools/nsc/generated/CompilerBenchmark_jmh.java
/Users/jason/code/scala-jmh-suite/target/scala-2.11/generated-sources/jmh/scala/tools/nsc/generated/CompilerBenchmark_jmh_B1.java
/Users/jason/code/scala-jmh-suite/target/scala-2.11/generated-sources/jmh/scala/tools/nsc/generated/CompilerBenchmark_jmh_B2.java
/Users/jason/code/scala-jmh-suite/target/scala-2.11/generated-sources/jmh/scala/tools/nsc/generated/CompilerBenchmark_jmh_B3.java
/Users/jason/code/scala-jmh-suite/target/scala-2.11/generated-sources/jmh/scala/tools/nsc/generated/JavacBenchmark_bench.java
/Users/jason/code/scala-jmh-suite/target/scala-2.11/generated-sources/jmh/scala/tools/nsc/generated/JavacBenchmark_jmh.java
/Users/jason/code/scala-jmh-suite/target/scala-2.11/generated-sources/jmh/scala/tools/nsc/generated/JavacBenchmark_jmh_B1.java
/Users/jason/code/scala-jmh-suite/target/scala-2.11/generated-sources/jmh/scala/tools/nsc/generated/JavacBenchmark_jmh_B2.java
/Users/jason/code/scala-jmh-suite/target/scala-2.11/generated-sources/jmh/scala/tools/nsc/generated/JavacBenchmark_jmh_B3.java
javac @args.txt
/Users/jason/code/scala-jmh-suite/target/scala-2.11/classes/org/openjdk/jmh/infra/generated/Blackhole_jmh_B1.java:3: error: duplicate class: org.openjdk.jmh.infra.generated.Blackhole_jmh_B1
public class Blackhole_jmh_B1 extends org.openjdk.jmh.infra.Blackhole {
^
/Users/jason/code/scala-jmh-suite/target/scala-2.11/classes/org/openjdk/jmh/infra/generated/Blackhole_jmh_B2.java:3: error: duplicate class: org.openjdk.jmh.infra.generated.Blackhole_jmh_B2
public class Blackhole_jmh_B2 extends Blackhole_jmh_B1 {
^
/Users/jason/code/scala-jmh-suite/target/scala-2.11/classes/org/openjdk/jmh/infra/generated/Blackhole_jmh_B3.java:2: error: duplicate class: org.openjdk.jmh.infra.generated.Blackhole_jmh_B3
public class Blackhole_jmh_B3 extends Blackhole_jmh_B2 {
^
/Users/jason/code/scala-jmh-suite/target/scala-2.11/classes/org/openjdk/jmh/infra/generated/Blackhole_jmh.java:2: error: duplicate class: org.openjdk.jmh.infra.generated.Blackhole_jmh
public class Blackhole_jmh extends Blackhole_jmh_B3 {
^
/Users/jason/code/scala-jmh-suite/target/scala-2.11/classes/scala/tools/nsc/generated/JavacBenchmark_jmh_B1.java:3: error: duplicate class: scala.tools.nsc.generated.JavacBenchmark_jmh_B1
public class JavacBenchmark_jmh_B1 extends scala.tools.nsc.JavacBenchmark {
^
/Users/jason/code/scala-jmh-suite/target/scala-2.11/classes/scala/tools/nsc/generated/JavacBenchmark_jmh_B2.java:3: error: duplicate class: scala.tools.nsc.generated.JavacBenchmark_jmh_B2
public class JavacBenchmark_jmh_B2 extends JavacBenchmark_jmh_B1 {
^
/Users/jason/code/scala-jmh-suite/target/scala-2.11/classes/scala/tools/nsc/generated/JavacBenchmark_jmh_B3.java:2: error: duplicate class: scala.tools.nsc.generated.JavacBenchmark_jmh_B3
public class JavacBenchmark_jmh_B3 extends JavacBenchmark_jmh_B2 {
^
/Users/jason/code/scala-jmh-suite/target/scala-2.11/classes/scala/tools/nsc/generated/JavacBenchmark_jmh.java:2: error: duplicate class: scala.tools.nsc.generated.JavacBenchmark_jmh
public class JavacBenchmark_jmh extends JavacBenchmark_jmh_B3 {
^
/Users/jason/code/scala-jmh-suite/target/scala-2.11/classes/scala/tools/nsc/generated/JavacBenchmark_bench.java:34: error: duplicate class: scala.tools.nsc.generated.JavacBenchmark_bench
public final class JavacBenchmark_bench {
^
Note: Benchmark entry {'scala.tools.nsc.JavacBenchmark.bench', Throughput, {}} already exists, overwriting
9 errors
Removing /Users/jason/.ivy2/cache/org.openjdk.jmh/jmh-generator-annprocess/jars/jmh-generator-annprocess-1.8.jar
from the classpath corrects this error.
sbt-jmh
could guard against this mistake by adding the compiler option -proc:none
(http://stackoverflow.com/questions/882295/maven-compilation-error-duplicate-classes)
I was able to workaround this with:
libraryDependencies += "com.github.biboudis" % "jmh-profilers" % "0.1.3-SNAPSHOT" intransitive()
from sbt-jmh.
I was then able to gather the profiling data with:
run -jvmArgsPrepend -XX:+UnlockCommercialFeatures -i 1 -wi 1 -prof jfr
from sbt-jmh.
Awesome detective work, thanks a lot @retronym! I'll incorporate those hints and spin a release soon :-)
from sbt-jmh.
I still can't get this working with the binary release of jmh-profilers. There seems to be a forked VM running its code without -XX:+UnlockCommercialFeatures
. About to add some diagnostics to a locally built copy to find that..
from sbt-jmh.
> set javaOptions in run += "-XX:+UnlockCommercialFeatures"
does the trick.
from sbt-jmh.
See: biboudis/jmh-profilers#4 for the last problem on the stack 😄
from sbt-jmh.
Great to see that project is active :-)
from sbt-jmh.
Related Issues (20)
- Add recommended jvm options in async profiler HOT 2
- missing tag for 0.3.4 on GitHub HOT 1
- Cannot run JMH benchmarks with async-profiler for versions 0.3.5 and 0.3.6 HOT 1
- Version 0.3.5 JFR profile java.lang.UnsupportedClassVersionError on Java 8 HOT 3
- Tab completion for jmh parameters
- CI broken: unable to install oraclejdk8 HOT 4
- Request for feature: Cross-Versions benchmarking HOT 2
- Canceling execution does not work on Windows
- Error when trying to use Flight Recorder HOT 5
- Scala 2.13 support is missing ? HOT 1
- Benchmark compilation fails if java.sql.ResultSet is used HOT 4
- Is it possible to set `bspEnable := false` by default? HOT 1
- publish to maven central instead of bintray HOT 5
- jmh:run caused Unable to find the resource: /META-INF/BenchmarkList in multiple projects
- Specifying javaHome per configuration
- Log4j Dependencies not being passed to the Benchmark
- `Test / skip := true` leads to `java.lang.IllegalArgumentException: Benchmark does not match a class`
- Upgrade project/build.properties to use SBT 1.9.0 HOT 2
- How to use async-profiler with multiple options HOT 6
- Forking JMH may fail on Windows with "CreateProcess error=206, The filename or extension is too long" HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sbt-jmh.