io.prometheus.benchmark.CounterBenchmark Maven / Gradle / Ivy
                 Go to download
                
        
                    Show more of this group  Show more artifacts with this name
Show all versions of benchmarks Show documentation
                Show all versions of benchmarks Show documentation
        Benchmarks of client performance, and comparison to other systems.
    
                
            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