{"id":15699052,"url":"https://github.com/pgilad/java-micro-benchmark-example","last_synced_at":"2025-04-15T15:20:42.134Z","repository":{"id":66262803,"uuid":"152416089","full_name":"pgilad/java-micro-benchmark-example","owner":"pgilad","description":"A Java micro-benchmark example of Pattern find vs. matches using JMH framework","archived":false,"fork":false,"pushed_at":"2019-02-13T09:18:25.000Z","size":13,"stargazers_count":4,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-28T21:42:49.182Z","etag":null,"topics":["jmh","matching","micro-benchmarks","patterns","performance"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pgilad.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-10-10T11:56:55.000Z","updated_at":"2022-04-12T09:23:47.000Z","dependencies_parsed_at":null,"dependency_job_id":"a19f8ec7-33d2-4976-aee4-17b4f5ea71e4","html_url":"https://github.com/pgilad/java-micro-benchmark-example","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pgilad%2Fjava-micro-benchmark-example","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pgilad%2Fjava-micro-benchmark-example/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pgilad%2Fjava-micro-benchmark-example/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pgilad%2Fjava-micro-benchmark-example/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pgilad","download_url":"https://codeload.github.com/pgilad/java-micro-benchmark-example/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249094939,"owners_count":21211837,"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","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":["jmh","matching","micro-benchmarks","patterns","performance"],"created_at":"2024-10-03T19:37:48.292Z","updated_at":"2025-04-15T15:20:42.113Z","avatar_url":"https://github.com/pgilad.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# java-micro-benchmark-example\n\u003e A Java micro-benchmark example of Pattern find vs. matches using JMH framework\n\nI needed to do micro-benchmarks on Java code and created this starter to help me in the future\n\n## Installation and build\n\n```bash\nmvn clean install\n```\n\n## Running benchmark\n\nSimply run using `java -jar target/benchmarks.jar`:\n\n```bash\n$ java -jar target/benchmarks.jar\n# JMH version: 1.21\n# VM version: JDK 11.0.1, OpenJDK 64-Bit Server VM, 11.0.1+13\n# VM invoker: /Users/pelgi01/.sdkman/candidates/java/11.0.1-open/bin/java\n# VM options: \u003cnone\u003e\n# Warmup: 2 iterations, 10 s each\n# Measurement: 5 iterations, 10 s each\n# Timeout: 10 min per iteration\n# Threads: 1 thread, will synchronize iterations\n# Benchmark mode: Throughput, ops/time\n# Benchmark: org.sample.ArraySlicingBenchmark.testArrayStreamLimit\n\n# Run progress: 0.00% complete, ETA 00:04:40\n# Fork: 1 of 1\n# Warmup Iteration   1: 1040818.801 ops/s\n# Warmup Iteration   2: 1060593.136 ops/s\nIteration   1: 1066894.427 ops/s\nIteration   2: 1066709.854 ops/s\nIteration   3: 1066557.600 ops/s\nIteration   4: 1060663.407 ops/s\nIteration   5: 1069377.671 ops/s\n\n\nResult \"org.sample.ArraySlicingBenchmark.testArrayStreamLimit\":\n  1066040.592 ±(99.9%) 12402.190 ops/s [Average]\n  (min, avg, max) = (1060663.407, 1066040.592, 1069377.671), stdev = 3220.809\n  CI (99.9%): [1053638.401, 1078442.782] (assumes normal distribution)\n\n\n# JMH version: 1.21\n# VM version: JDK 11.0.1, OpenJDK 64-Bit Server VM, 11.0.1+13\n# VM invoker: /Users/pelgi01/.sdkman/candidates/java/11.0.1-open/bin/java\n# VM options: \u003cnone\u003e\n# Warmup: 2 iterations, 10 s each\n# Measurement: 5 iterations, 10 s each\n# Timeout: 10 min per iteration\n# Threads: 1 thread, will synchronize iterations\n# Benchmark mode: Throughput, ops/time\n# Benchmark: org.sample.ArraySlicingBenchmark.testArraysCopyRange\n\n# Run progress: 25.00% complete, ETA 00:03:31\n# Fork: 1 of 1\n# Warmup Iteration   1: 26589243.469 ops/s\n# Warmup Iteration   2: 28714683.597 ops/s\nIteration   1: 28909172.930 ops/s\nIteration   2: 28884393.950 ops/s\nIteration   3: 28839988.471 ops/s\nIteration   4: 28847179.788 ops/s\nIteration   5: 28696959.476 ops/s\n\n\nResult \"org.sample.ArraySlicingBenchmark.testArraysCopyRange\":\n  28835538.923 ±(99.9%) 317347.449 ops/s [Average]\n  (min, avg, max) = (28696959.476, 28835538.923, 28909172.930), stdev = 82414.125\n  CI (99.9%): [28518191.474, 29152886.373] (assumes normal distribution)\n\n\n# JMH version: 1.21\n# VM version: JDK 11.0.1, OpenJDK 64-Bit Server VM, 11.0.1+13\n# VM invoker: /Users/pelgi01/.sdkman/candidates/java/11.0.1-open/bin/java\n# VM options: \u003cnone\u003e\n# Warmup: 2 iterations, 10 s each\n# Measurement: 5 iterations, 10 s each\n# Timeout: 10 min per iteration\n# Threads: 1 thread, will synchronize iterations\n# Benchmark mode: Throughput, ops/time\n# Benchmark: org.sample.PatternMatchingBenchmark.testPatternFind\n\n# Run progress: 50.00% complete, ETA 00:02:20\n# Fork: 1 of 1\n# Warmup Iteration   1: 650279.697 ops/s\n# Warmup Iteration   2: 678440.017 ops/s\nIteration   1: 682620.764 ops/s\nIteration   2: 682781.705 ops/s\nIteration   3: 685321.757 ops/s\nIteration   4: 677914.475 ops/s\nIteration   5: 683559.497 ops/s\n\n\nResult \"org.sample.PatternMatchingBenchmark.testPatternFind\":\n  682439.640 ±(99.9%) 10578.344 ops/s [Average]\n  (min, avg, max) = (677914.475, 682439.640, 685321.757), stdev = 2747.162\n  CI (99.9%): [671861.295, 693017.984] (assumes normal distribution)\n\n\n# JMH version: 1.21\n# VM version: JDK 11.0.1, OpenJDK 64-Bit Server VM, 11.0.1+13\n# VM invoker: /Users/pelgi01/.sdkman/candidates/java/11.0.1-open/bin/java\n# VM options: \u003cnone\u003e\n# Warmup: 2 iterations, 10 s each\n# Measurement: 5 iterations, 10 s each\n# Timeout: 10 min per iteration\n# Threads: 1 thread, will synchronize iterations\n# Benchmark mode: Throughput, ops/time\n# Benchmark: org.sample.PatternMatchingBenchmark.testPatternMatch\n\n# Run progress: 75.00% complete, ETA 00:01:10\n# Fork: 1 of 1\n# Warmup Iteration   1: 423777.701 ops/s\n# Warmup Iteration   2: 450119.729 ops/s\nIteration   1: 447881.891 ops/s\nIteration   2: 450314.890 ops/s\nIteration   3: 388034.179 ops/s\nIteration   4: 405189.766 ops/s\nIteration   5: 411625.322 ops/s\n\n\nResult \"org.sample.PatternMatchingBenchmark.testPatternMatch\":\n  420609.210 ±(99.9%) 105556.621 ops/s [Average]\n  (min, avg, max) = (388034.179, 420609.210, 450314.890), stdev = 27412.719\n  CI (99.9%): [315052.589, 526165.831] (assumes normal distribution)\n\n\n# Run complete. Total time: 00:04:41\n\nREMEMBER: The numbers below are just data. To gain reusable insights, you need to follow up on\nwhy the numbers are the way they are. Use profilers (see -prof, -lprof), design factorial\nexperiments, perform baseline and negative tests that provide experimental control, make sure\nthe benchmarking environment is safe on JVM/OS/HW level, ask for reviews from the domain experts.\nDo not assume the numbers tell you what you want them to tell.\n\nBenchmark                                    Mode  Cnt         Score        Error  Units\nArraySlicingBenchmark.testArrayStreamLimit  thrpt    5   1066040.592 ±  12402.190  ops/s\nArraySlicingBenchmark.testArraysCopyRange   thrpt    5  28835538.923 ± 317347.449  ops/s\nPatternMatchingBenchmark.testPatternFind    thrpt    5    682439.640 ±  10578.344  ops/s\nPatternMatchingBenchmark.testPatternMatch   thrpt    5    420609.210 ± 105556.621  ops/s\n```\n\n## License\n\nMIT © [Gilad Peleg](https://www.giladpeleg.com)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpgilad%2Fjava-micro-benchmark-example","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpgilad%2Fjava-micro-benchmark-example","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpgilad%2Fjava-micro-benchmark-example/lists"}