jmh | https

 by   openjdk Java Version: 1.36 License: GPL-2.0

kandi X-RAY | jmh Summary

kandi X-RAY | jmh Summary

jmh is a Java library. jmh has no bugs, it has no vulnerabilities, it has build file available, it has a Strong Copyleft License and it has high support. You can download it from GitHub, Maven.

JMH is a Java harness for building, running, and analysing nano/micro/milli/macro benchmarks written in Java and other languages targeting the JVM.

            kandi-support Support

              jmh has a highly active ecosystem.
              It has 1523 star(s) with 240 fork(s). There are 30 watchers for this library.
              It had no major release in the last 6 months.
              jmh has no issues reported. There are 10 open pull requests and 0 closed requests.
              It has a negative sentiment in the developer community.
              The latest version of jmh is 1.36

            kandi-Quality Quality

              jmh has 0 bugs and 0 code smells.

            kandi-Security Security

              jmh has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.
              jmh code analysis shows 0 unresolved vulnerabilities.
              There are 0 security hotspots that need review.

            kandi-License License

              jmh is licensed under the GPL-2.0 License. This license is Strong Copyleft.
              Strong Copyleft licenses enforce sharing, and you can use them when creating open source projects.

            kandi-Reuse Reuse

              jmh releases are not available. You will need to build from source code and install.
              Deployable package is available in Maven.
              Build file is available. You can build the component from source.
              Installation instructions, examples and code snippets are available.
              jmh saves you 44672 person hours of effort in developing the same functionality from scratch.
              It has 53336 lines of code, 4802 functions and 946 files.
              It has low code complexity. Code complexity directly impacts maintainability of the code.

            Top functions reviewed by kandi - BETA

            kandi has reviewed jmh and discovered the below as its top functions. This is intended to give you an instant insight into jmh implemented functionality, and help decide if they suit your requirements.
            • Runs benchmark
            • Set the blackhole options
            • Prints the JMH version
            • List supported profiles
            • Main entry point
            • Set the blackhole options
            • Prints the JMH version
            • List supported profiles
            • Writes out a collection of results
            • Takes a string and converts it to a string
            • Writes a collection of results to the output file
            • Convert class names to denser class names
            • Runs the sample algorithm
            • Decode a String
            • Initializes the variables
            • Called after a test is executed
            • Writes the given results to the output
            • Visit this class
            • Starts parsing events
            • Discover all classes that have been annotated
            • Starts the application
            • Distribute threads to a list of threads
            • Invokes the method on the proxy
            • Called after an iteration
            • Parses the init line
            • Command - line tool
            • Encode base64
            • Read events from the file
            • Starts the benchmark
            Get all kandi verified functions for this library.

            jmh Key Features

            No Key Features are available at this moment for jmh.

            jmh Examples and Code Snippets

            No Code Snippets are available at this moment for jmh.

            Community Discussions


            Field access costs and constant folding in JMH benchmark
            Asked 2022-Apr-04 at 21:54

            I'm running the following benchmark on Java 17:



            Answered 2022-Apr-04 at 21:54

            I assume that the costs of calling String.valueOf() within benchmark method remained the same

            It is not. In the first case, the method argument is constant, so JIT can apply the Constant Propagation optimization.

            Consider a very simplified example:



            JMH - How to measure time it takes to insert 50M items in an ArrayList
            Asked 2022-Mar-21 at 15:47

            I've an ArrayList of 50M, I would like to measure time it takes to store that many objects in it. It seems as all JMH modes are time based, we can't really control number of executions of code under @Benchmark. For examlpe, how can I ensure the following code is run exactly 50M times per fork?



            Answered 2022-Mar-21 at 15:47

            You can create a benchmark class (ArrayListBenchmark) and a runner class (BenchmarkRunner).

            • In ArrayListBenchmark class, you can add the benchmark method that iterates the desired number of times adding items to the List.
            • In BenchmarkRunner class, you set the desired number of items to add to the List and config the runner options.

            Note: Depending on your environment, adding 50M items may throw an OutOfMemoryError.

            Benchmark class:



            JMH using java 17, no dead code elimination
            Asked 2022-Feb-09 at 17:17

            I run sample JHM benchmark which suppose to show dead code elimination. Code is rewritten for conciseness from jhm github sample.



            Answered 2022-Feb-09 at 17:17

            Those samples depend on JDK internals.

            Looks like since JDK 9 and JDK-8152907, Math.log is no longer intrinsified into C2 intermediate representation. Instead, a direct call to a quick LIBM-backed stub is made. This is usually faster for the code that actually uses the result. Notice how measureCorrect is faster in JDK 17 output in your case.

            But for JMH samples, it limits the the compiler optimizations around the Math.log, and dead code / folding samples do not work properly. The fix it to make samples that do not rely on JDK internals without a good reason, and instead use a custom written payload.

            This is being done in JMH here:



            Removing mutability without losing speed
            Asked 2022-Jan-31 at 20:57

            I have a function like this:



            Answered 2022-Jan-31 at 20:57

            Equivalent immutable one-liner is:



            Missing bounds checking elimination in String constructor?
            Asked 2022-Jan-30 at 21:18

            Looking into UTF8 decoding performance, I noticed the performance of protobuf's UnsafeProcessor::decodeUtf8 is better than String(byte[] bytes, int offset, int length, Charset charset) for the following non ascii string: "Quizdeltagerne spiste jordbær med flØde, mens cirkusklovnen".

            I tried to figure out why, so I copied the relevant code in String and replaced the array accesses with unsafe array accesses, same as UnsafeProcessor::decodeUtf8. Here are the JMH benchmark results:



            Answered 2022-Jan-12 at 09:52

            To measure the branch you are interested in and particularly the scenario when while loop becomes hot, I've used the following benchmark:



            looping over array, performance difference between indexed and enhanced for loop
            Asked 2022-Jan-05 at 19:41

            The JLS states, that for arrays, "The enhanced for statement is equivalent to a basic for statement of the form". However if I check the generated bytecode for JDK8, for both variants different bytecode is generated, and if I try to measure the performance, surprisingly, the enhanced one seems to be giving better results(on jdk8)... Can someone advise why it's that? I'd guess it's because of incorrect jmh testing, so if it's that, please suggest how to fix that. (I know that JMH states not to test using loops, but I don't think this applies here, as I'm actually trying to measure the loops here)

            My JMH testing was rather simple (probably too simple), but I cannot explain the results. Testing JMH code is below, typical results are:



            Answered 2022-Jan-05 at 19:41

            TL;DR: You are observing what happens when JIT compiler cannot trust that values are not changing inside the loop. Additionally, in the tiny benchmark like this, Blackhole.consume costs dominate, obscuring the results.

            Simplifying the test:



            Does OpenJDK 11 support Java Flight Recorder?
            Asked 2021-Nov-16 at 07:09

            Following this post :

            jfr is supported natively in openjdk 11

            and it is confirmed by the features list of OpenJDK 11:

            328: Flight Recorder

            However, from this DZone article, about using JFR-linked option -XX:+UnlockCommercialFeatures:

            OpenJDK doesn’t recognize this option

            And when I try for ex. with Gradle: ./gradlew clean -Dorg.gradle.jvmargs="-XX:+UnlockCommercialFeatures" I get

            Process command line: C:\Program Files\AdoptOpenJDK\jdk-\bin\java.exe -XX:+UnlockCommercialFeatures (...)

            Unrecognized VM option 'UnlockCommercialFeatures'

            What am I missing here ?



            Answered 2021-Nov-16 at 07:09

            JFR was a commercial feature in Oracle Java up to Java 1.8 that needed to be specially enabled (using -XX:+UnlockCommercialFeatures).

            With Java 11 and later it is no longer a commercial feature so you don't need this flag.

            Actually the linked article states:

            JFR Packaging Differences
            Oracle JDK 11 emits a warning when using the -XX:+UnlockCommercialFeatures option, whereas OpenJDK doesn’t recognize this option and reports an error.

            And the example below that the author shows doesn't use the -XX:+UnlockCommercialFeatures.



            JMH - How to correctly benchmark Thread Pools?
            Asked 2021-Nov-10 at 10:00

            Please, read the newest EDIT of this question.

            Issue: I need to write a correct benchmark to compare a different work using different Thread Pool realizations (also from external libraries) using different methods of execution to other work using other Thread Pool realizations and to a work without any threading.

            For example I have 24 tasks to complete and 10000 random Strings in benchmark state:



            Answered 2021-Oct-29 at 14:03

            See answers to this question to learn how to write benchmarks in java.

            ... executorService maybe correct (but i am still unsure) ...



            OutOfMemoryError when benchmarking ArrayList.add() in JMH
            Asked 2021-Nov-09 at 20:32

            I've been attempting to run benchmarks to compare how many ops/ms for the add method of ArrayLists and LinkedLists in Java. My benchmarks are set up as follows but I can't pinpoint what is causing the out of memory error. Possibly the initialisation of the lists in the setup method?



            Answered 2021-Nov-09 at 19:58

            Disclaimer: it's not a answer to the question. But I wanted to share with OP my findings, which would not fit so well in a comment.

            I encountered on my system a different exception:



            DTraceAsmProfiler of JMH fails with '[sudo: a password is required' on Mac
            Asked 2021-Oct-29 at 08:57

            I'm running a benchmark from IDEA on MacOS with DTraceAsmProfiler and it fails with this error:



            Answered 2021-Oct-29 at 08:57

            Finally I've found the solution:


            Community Discussions, Code Snippets contain sources that include Stack Exchange Network


            No vulnerabilities reported

            Install jmh

            JMH project does not ship the build scripts for build systems other that Maven. But there are community-supported bindings:. If you want to build with an alternative build system, you may want to see the Ant sample which describes the steps to build JMH benchmark projects.
            Gradle JMH Plugin
            Scala SBT JMH Plugin


            While the command line approach is the suggested one, some people prefer to use IDEs. The user experience varies between different IDEs, but we will outline the general things here. Running benchmarks from the IDE is generally not recommended due to generally uncontrolled environment in which the benchmarks run. Step 1. Setting up the benchmarking project. Some IDEs provide the GUI to create the Maven project from the given archetype. Make sure your IDE knows about Central archetype catalog, and look for org.openjdk.jmh:jmh-${lang}-benchmark-archetype there. Alternatively, you can use the command line to generate the benchmark project, see above. Step 2. Building the benchmarks. Most IDEs are able to open/import Maven projects, and infer the build configuration from Maven project configuration. IDEA and NetBeans are able to build JMH benchmark projects with little to no effort. Eclipse build configuration may need to set up JMH annotation processors to run.
            Find more information at:

            Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items

            Find more libraries
          • HTTPS


          • CLI

            gh repo clone openjdk/jmh

          • sshUrl


          • Stay Updated

            Subscribe to our newsletter for trending solutions and developer bootcamps

            Agree to Sign up and Terms & Conditions

            Share this Page

            share link

            Consider Popular Java Libraries


            by CyC2018


            by Snailclimb


            by MisterBooo


            by spring-projects

            Try Top Libraries by openjdk


            by openjdkJava


            by openjdkC++


            by openjdkJava


            by openjdkJava


            by openjdkJava