package io.blobkeeper.benchmark.micro; /* * Copyright (C) 2016 by Denis M. Gabaydulin * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import org.openjdk.jmh.annotations.*; import org.openjdk.jmh.infra.Blackhole; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; import java.util.concurrent.TimeUnit; @BenchmarkMode(Mode.AverageTime) @State(Scope.Benchmark) @Fork(3) @OutputTimeUnit(TimeUnit.NANOSECONDS) @Warmup(iterations = 3, time = 10, timeUnit = TimeUnit.SECONDS) @Measurement(iterations = 5, time = 10, timeUnit = TimeUnit.SECONDS) public class QueueBenchmark { @Param({"100", "1000", "10000"}) public int elts; private BlockingQueue<Long> queue; @Setup public void setup() { queue = new ArrayBlockingQueue<>(1048576); } @Benchmark public void offer(Blackhole bh) throws InterruptedException { for (long i = 0; i < elts; i++) { queue.offer(i); bh.consume(i); } } }