/*
 * Copyright (c) 2019, 2020, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.  Oracle designates this
 * particular file as subject to the "Classpath" exception as provided
 * by Oracle in the LICENSE file that accompanied this code.
 *
 * This code is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */
package micro.benchmarks;

import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.State;
import org.openjdk.jmh.infra.Blackhole;

Benchmarks cost of ArrayList.
/** * Benchmarks cost of ArrayList. */
public class GroupAllocationBenchmark extends BenchmarkBase { static class Node { Object x; Object y; Object z1; Object z2; Object z3; Node(Object x, Object y) { this.x = x; this.y = y; } } @State(Scope.Benchmark) public static class BenchState { public byte[] bytes = new byte[16]; Object c; Object a; Object b; Pair pair = new Pair(); } static class Pair { Object left; Object right; } @Benchmark public void groupAllocate3(Blackhole bh) { bh.consume(new Node(new Node(bh, bh), new Node(bh, bh))); } @Benchmark public void groupAllocate2(Blackhole bh) { bh.consume(new Node(new Node(bh, bh), null)); } @Benchmark public void groupAllocate1(Blackhole bh) { bh.consume(new Node(null, null)); } class BufByteArray { int begin; int end; byte[] bytes; BufByteArray(byte[] bytes) { this.bytes = bytes; this.begin = 116; this.end = 324; } } // object(145)=Buf$ByteArray[int begin=116,int end=324,byte[] bytes=294] @Benchmark public void bufDecode(Blackhole bh, BenchState state) { Object a = new BufByteArray(state.bytes); Object b = new BufByteArray(state.bytes); Pair pair = state.pair; pair.left = a; pair.right = b; bh.consume(pair); } class TxnLevelImpl { int prevReadCount; long minRetryTimeoutNanos = 9223372036854775807L; long consumedRetryDelta; int prevBargeCount; int prevWriteThreshold; int logSize; int[] indices; Object[] prevValues; int beforeCommitSize; int whileValidatingSize; int whilePreparingSize; int whileCommittingSize; int afterCommitSize; int afterRollbackSize; boolean phantom; boolean waiters; Object txn; Object executor; TxnLevelImpl parUndo; Object parLevel; Object root; Object blockedBy; Object state; TxnLevelImpl(Object a, Object b, Object c) { txn = a; executor = b; root = c; } } @Benchmark public void rangeTxnLevelImpl(Blackhole bh, BenchState state) { TxnLevelImpl o = new TxnLevelImpl(state.a, state.b, state.c); bh.consume(o); } }