Add JMH benchmark harness - #2778
Conversation
There was a problem hiding this comment.
Code Review
This pull request integrates JMH benchmarking into the jme3-core module, establishing the build infrastructure and adding benchmarks for bounding volumes, light lists, and geometry lists. Feedback suggests expanding the benchmark source set's classpath to include main runtime and test output dependencies to prevent potential compilation or runtime errors. Additionally, a more robust modulo-based offset calculation was recommended for the light list sorting benchmark to support arbitrary light counts.
85d9391 to
cc0750d
Compare
|
🖼️ Screenshot tests have failed. The purpose of these tests is to ensure that changes introduced in this PR don't break visual features. They are visual unit tests. 📄 Where to find the report:
✅ If you did mean to change things: ✨ If you are creating entirely new tests: Note; it is very important that the committed reference images are created on the build pipeline, locally created images are not reliable. Similarly tests will fail locally but you can look at the report to check they are "visually similar". See https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-screenshot-tests/README.md for more information Contact @richardTingle (aka richtea) for guidance if required |
cc0750d to
2876086
Compare
riccardobl
left a comment
There was a problem hiding this comment.
I think we should move all benchmark to a dedicated jme3-benchmark module, so that it is easier to separate them from the actual engine source code.
dc27f27 to
b0fce5b
Compare
|
Should be good to go now. @riccardobl there's something going on with graal in libjglios in the ci recently. I assume it's unrelated to this pr? |
b0fce5b to
5c81b07
Compare
|
The only problem left here is that the jme3-benchmarks module is going to be included in the release zip and published to maven central. Lines 29 to 36 in 032a493 |
5c81b07 to
fb1e304
Compare
|
Sorry for the delay. Fixed |
Adds a dedicated
jme3-benchmarkmodule with initial JMH coverage for bounding volumes, LightList mutations/sorting, and GeometryList clearing.The benchmark module is included only when an explicit benchmark task is requested, so normal builds, distribution archives, and publication configuration do not include it. Nothing runs it in CI because machine/load variation would make performance gating unreliable.
List available benchmarks:
./gradlew :jme3-benchmark:jmh -PjmhArgs='-l'Run selected JMH options:
./gradlew :jme3-benchmark:jmh -PjmhArgs='<JMH options>'