Each push to the repository will trigger a benchmark run. The project uses a special build task which merges all the benchmark results into a single report file. Latest benchmark results will be viewable via GitHub Pages: https://joel-jeremy.github.io/java-config-library-benchmarks/
(Alphabetical order)
- Avaje Config
- Cfg4j
- Coat
- Externalized Properties
- Gestalt Config
- Lightbend Config
- MicroProfile Config - Geronimo
- MicroProfile Config - Helidon
- MicroProfile Config - KumuluzEE
- MicroProfile Config - MicroBean
- MicroProfile Config - SmallRye
- Owner
- Spring Core (Directly using Spring's Environment)
Each library is setup with its "default" configurations. In addition to the defaults, additional configuration/setup is done to "load" a single .properties
file. For the benchmark runs, each library will load properties/configuration from the loaded .properties
file (all with exactly the same file contents).
Benchmarks require Java 11.
To run the benchmarks and generate reports, use the runAllJmh.sh
script.
To introduce a new benchmark, create a new gradle subproject and:
- Create an
Benchmark
abstract class underio.github.joeljeremy7.java.config.lib.benchmarks
package. - Create benchmark methods in
Benchmark
class- Minimum required methods are:
- Retrieve a
String
property/configuration - Retrieve an
int
property/configuration
- Retrieve a
- Minimum required methods are:
- Create an
Avgt
andThrpt
nested class withinBenchmark
which extends the abstractBenchmark
class so that they execute the same benchmarks. - Annotate
Avgt
andThrpt
nested classes with appropriate JMH annotations to record results: avgt (ns) and thrpt (ms). - Add the subproject's
jmh
task to therunAllJmh.sh
script. - Add project repository link to Libraries section.