{"id":28772718,"url":"https://github.com/openjdk/jmh-jdk-microbenchmarks","last_synced_at":"2025-07-26T03:11:05.910Z","repository":{"id":50090402,"uuid":"302590750","full_name":"openjdk/jmh-jdk-microbenchmarks","owner":"openjdk","description":"https://openjdk.org/projects/code-tools/jmh-jdk-microbenchmarks","archived":false,"fork":false,"pushed_at":"2024-12-05T07:52:05.000Z","size":1464,"stargazers_count":41,"open_issues_count":0,"forks_count":16,"subscribers_count":13,"default_branch":"master","last_synced_at":"2025-07-15T01:41:54.013Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/openjdk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-10-09T09:13:03.000Z","updated_at":"2025-06-25T23:20:16.000Z","dependencies_parsed_at":"2023-02-08T20:31:12.885Z","dependency_job_id":null,"html_url":"https://github.com/openjdk/jmh-jdk-microbenchmarks","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/openjdk/jmh-jdk-microbenchmarks","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openjdk%2Fjmh-jdk-microbenchmarks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openjdk%2Fjmh-jdk-microbenchmarks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openjdk%2Fjmh-jdk-microbenchmarks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openjdk%2Fjmh-jdk-microbenchmarks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openjdk","download_url":"https://codeload.github.com/openjdk/jmh-jdk-microbenchmarks/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openjdk%2Fjmh-jdk-microbenchmarks/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267110039,"owners_count":24037634,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-26T02:00:08.937Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-06-17T14:04:51.425Z","updated_at":"2025-07-26T03:11:05.895Z","avatar_url":"https://github.com/openjdk.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Code Tools : JMH JDK Microbenchmarks\n\nThe JMH JDK Microbenchmarks is a collection of microbenchmarks for measuring\nthe performance of the JDK API and JVM features using\nthe [JMH](http://openjdk.java.net/projects/code-tools/jmh/) framework. \n\n\n## Building and running the project\n\nCurrently, the project can be built and run with JDK 8 and later. This is\na Maven project and is built by:\n\n    $ mvn clean install\n\nAfter building, the executable jar is target/jmh-jdk-microbenchmarks-[version].jar.\nRun the benchmarks with:\n\n    $ java -jar target/jmh-jdk-microbenchmarks-*.jar [optional jmh parameters]\n\nSee the entire list of benchmarks using:\n\n    $ java -jar target/jmh-jdk-microbenchmarks-*.jar -l [optional regex to select benchmarks]\n\nFor example:\n\n    $ java -jar target/jmh-jdk-microbenchmarks-1.0-SNAPSHOT.jar -l .*bulk_par_lambda.*\n    Benchmarks: \n    org.openjdk.bench.java.util.stream.tasks.DictionaryWordValue.Lambda.bulk_par_lambda\n    org.openjdk.bench.java.util.stream.tasks.IntegerMax.Lambda.bulk_par_lambda\n    org.openjdk.bench.java.util.stream.tasks.IntegerSum.Lambda.bulk_par_lambda\n    org.openjdk.bench.java.util.stream.tasks.PrimesFilter.t100.Lambda.bulk_par_lambda\n    org.openjdk.bench.java.util.stream.tasks.PrimesFilter.t10000.Lambda.bulk_par_lambda\n\nAnd the same regex syntax works to run the same set:\n\n    $ java -jar target/jmh-jdk-microbenchmarks-1.0-SNAPSHOT.jar .*bulk_par_lambda.*\n\n## Troubleshooting\n\n### Build of micros-javac module got stuck\n\nIf you build got stuck on `[get] Getting: https://download.java.net/openjdk/jdk11/ri/openjdk-11+28_windows-x64_bin.zip` then you are probably experiencing some networking or web proxy obstacles. \n\nSolution is to download required reference JDK from [https://download.java.net/openjdk/jdk11/ri/openjdk-11+28_windows-x64_bin.zip](https://download.java.net/openjdk/jdk11/ri/openjdk-11+28_windows-x64_bin.zip) manually and then build the project with property pointing to the local copy:\n\n    $ mvn clean install -Djavac.benchmark.openjdk.zip.download.url=file:///\u003cyour download location\u003e/openjdk-11+28_windows-x64_bin.zip\n\nNote: Please use `openjdk-11+28_windows-x64_bin.zip` to build the project no matter what target platform is.\n\n### Execution of micros-javac benchmarks fail with java.lang.IllegalAccessError\n\nIf you experience following exception during benchmarks execution:\n\n\tjava.lang.IllegalAccessError: superclass access check failed: class\n\torg.openjdk.bench.langtools.javac.JavacBenchmark$2 (in unnamed module) cannot access class\n\tcom.sun.tools.javac.main.JavaCompiler\n\nIt is caused by recently enabled Jigsaw enforcement and micros-javac benchmarks requirement to access several jdk.compiler module private packages. \n\nSolution is to permit access to private packages by adding following option to the command line:\n\n\t$ java --illegal-access=permit -jar target/jmh-jdk-microbenchmarks-1.0-SNAPSHOT.jar [optional jmh parameters]\n\n### Execution of micros-javac benchmarks takes several hours\n\nmicros-javac benchmarks consist of two sets of benchmarks: \n * `SingleJavacBenchmark` (which is parametrized) measures each single javac compilation stage in an isolated run. This benchmark is designed for exact automated performance regression testing and it takes several hours to execute completely. \n * `GroupJavacBenchmark` is grouping the measurements of all javac compilation stages into one run and its execution should take less than 30 minutes on a regular developers computer.\n\nSolution to speed up javac benchmarking is to select only `GroupJavacBenchmark` for execution using following command line:\n\n\t  $ java -jar target/jmh-jdk-microbenchmarks-1.0-SNAPSHOT.jar .*GroupJavacBenchmark.*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenjdk%2Fjmh-jdk-microbenchmarks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenjdk%2Fjmh-jdk-microbenchmarks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenjdk%2Fjmh-jdk-microbenchmarks/lists"}