io.prometheus.benchmark.CounterBenchmark Maven / Gradle / Ivy
package io.prometheus.benchmark;
import com.codahale.metrics.MetricRegistry;
import java.util.concurrent.TimeUnit;
import org.openjdk.jmh.annotations.BenchmarkMode;
import org.openjdk.jmh.annotations.Mode;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.OutputTimeUnit;
import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.Setup;
import org.openjdk.jmh.annotations.State;
import org.openjdk.jmh.runner.Runner;
import org.openjdk.jmh.runner.RunnerException;
import org.openjdk.jmh.runner.options.Options;
import org.openjdk.jmh.runner.options.OptionsBuilder;
@State(Scope.Benchmark)
public class CounterBenchmark {
MetricRegistry registry;
com.codahale.metrics.Counter codahaleCounter;
com.codahale.metrics.Meter codahaleMeter;
io.prometheus.client.metrics.Counter prometheusCounter;
io.prometheus.client.metrics.Counter.Child prometheusCounterChild;
io.prometheus.client.Counter prometheusSimpleCounter;
io.prometheus.client.Counter.Child prometheusSimpleCounterChild;
io.prometheus.client.Counter prometheusSimpleCounterNoLabels;
@Setup
public void setup() {
prometheusCounter = io.prometheus.client.metrics.Counter.newBuilder()
.name("name")
.documentation("some description..")
.build();
prometheusCounterChild = prometheusCounter.newPartial().apply();
prometheusSimpleCounter = io.prometheus.client.Counter.build()
.name("name")
.help("some description..")
.labelNames("some", "group").create();
prometheusSimpleCounterChild = prometheusSimpleCounter.labels("test", "group");
prometheusSimpleCounterNoLabels = io.prometheus.client.Counter.build()
.name("name")
.help("some description..")
.create();
registry = new MetricRegistry();
codahaleCounter = registry.counter("counter");
codahaleMeter = registry.meter("meter");
}
@Benchmark
@BenchmarkMode({Mode.AverageTime})
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public void prometheusCounterIncBenchmark() {
prometheusCounter.newPartial().apply().increment();
}
@Benchmark
@BenchmarkMode({Mode.AverageTime})
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public void prometheusCounterChildIncBenchmark() {
prometheusCounterChild.increment();
}
@Benchmark
@BenchmarkMode({Mode.AverageTime})
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public void prometheusSimpleCounterIncBenchmark() {
prometheusSimpleCounter.labels("test", "group").inc();
}
@Benchmark
@BenchmarkMode({Mode.AverageTime})
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public void prometheusSimpleCounterChildIncBenchmark() {
prometheusSimpleCounterChild.inc();
}
@Benchmark
@BenchmarkMode({Mode.AverageTime})
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public void prometheusSimpleCounterNoLabelsIncBenchmark() {
prometheusSimpleCounterNoLabels.inc();
}
@Benchmark
@BenchmarkMode({Mode.AverageTime})
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public void codahaleCounterIncBenchmark() {
codahaleCounter.inc();
}
@Benchmark
@BenchmarkMode({Mode.AverageTime})
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public void codahaleMeterMarkBenchmark() {
codahaleMeter.mark();
}
public static void main(String[] args) throws RunnerException {
Options opt = new OptionsBuilder()
.include(CounterBenchmark.class.getSimpleName())
.warmupIterations(5)
.measurementIterations(4)
.threads(4)
.forks(1)
.build();
new Runner(opt).run();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy