It is clearly a bad idea to use jakarta.json.Json
, which looks up jakarta.json.spi.JsonProvider
using java.util.ServiceLoader
for each method call:
perf: Reuse a single JsonProvider.
This speeds up the formatter significantly.
Before:
Benchmark Mode Cnt Score Error Units
FormatterBenchmark.massivelyStructuredLogRecord thrpt 10 6552.727 ± 2169.572 ops/s
FormatterBenchmark.simpleLogRecord thrpt 10 8126.699 ± 2259.912 ops/s
FormatterBenchmark.structuredLogRecord thrpt 10 5594.849 ± 1129.151 ops/s
After:
Benchmark Mode Cnt Score Error Units
FormatterBenchmark.massivelyStructuredLogRecord thrpt 10 137879.001 ± 30467.644 ops/s
FormatterBenchmark.simpleLogRecord thrpt 10 896085.217 ± 249890.421 ops/s
FormatterBenchmark.structuredLogRecord thrpt 10 553428.807 ± 194787.754 ops/s