spotify / semantic-metrics

Capturing meaningful metrics in your Java application
Apache License 2.0
66 stars 36 forks source link

Add concurrent proxy in front of SemanticMetricDistribution #111

Open spkrka opened 3 years ago

spkrka commented 3 years ago

The concurrent version is slightly slower than the synchronized during low contention (43 vs 48 ops/us), but scales better as contention increases.

The concurrent version also uses more memory (currently a factor of 4 * num cores).

Benchmark                     Mode  Cnt    Score   Error   Units
DistributionBenchmark.conc1  thrpt    5   43.945 ± 1.092  ops/us
DistributionBenchmark.conc2  thrpt    5   78.461 ± 3.776  ops/us
DistributionBenchmark.conc4  thrpt    5  100.641 ± 7.070  ops/us
DistributionBenchmark.conc8  thrpt    5   96.606 ± 1.941  ops/us
DistributionBenchmark.sync1  thrpt    5   48.235 ± 2.858  ops/us
DistributionBenchmark.sync2  thrpt    5   17.794 ± 0.757  ops/us
DistributionBenchmark.sync4  thrpt    5   13.528 ± 1.251  ops/us
DistributionBenchmark.sync8  thrpt    5   26.025 ± 5.570  ops/us