Hi, I follow the instruction on https://htmlpreview.github.io/?https://github.com/openjdk/jdk/blob/master/doc/testing.html#microbenchmarks to run a new microbenchmark. I got error message as follows. java.lang.UnsupportedClassVersionError: Preview features are not enabled for org/openjdk/bench/java/lang/reflect/proxy/jmh_generated/ProxyBench_newProxyInstance1i_jmhTest (class file version 60.65535). Try running with '--enable-preview' at java.base/java.lang.ClassLoader.defineClass1(Native Method) at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1010) at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150) at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:855) at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:753) at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:676) at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:634) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:182) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519) at java.base/java.lang.Class.forName0(Native Method) at java.base/java.lang.Class.forName(Class.java:377) at org.openjdk.jmh.util.ClassUtils.loadClass(ClassUtils.java:72) at org.openjdk.jmh.runner.BenchmarkHandler.<init>(BenchmarkHandler.java:68) at org.openjdk.jmh.runner.BaseRunner.runBenchmark(BaseRunner.java:232) at org.openjdk.jmh.runner.BaseRunner.doSingle(BaseRunner.java:138) at org.openjdk.jmh.runner.BaseRunner.runBenchmarksForked(BaseRunner.java:75) at org.openjdk.jmh.runner.ForkedRunner.run(ForkedRunner.java:72) at org.openjdk.jmh.runner.ForkedMain.main(ForkedMain.java:84)
If I add an extra flag “—enable-preview” , the micro bench will work. make test TEST="micro:java.lang.reflect" MICRO="VM_OPTIONS=--enable-preview" I am using jmh from make/devkit/createJMHBundle.sh, which gives me jmh-core-1.26.jar Is that jmh-core too old or we should adjust RunTest.gmk a little bit to have that flag? Does Openjdk CI run benchmarks to detect performance regression? If so, could you point me to a guideline of microbenmark? I lack of the basic sense of a “good” microbenchmark. My concern is the new micro I added is too long to break the established test run. Thanks, --lx
