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