Skip to content

Instantly share code, notes, and snippets.

@vlsi
Created September 29, 2013 14:52
Show Gist options
  • Save vlsi/6753153 to your computer and use it in GitHub Desktop.
Save vlsi/6753153 to your computer and use it in GitHub Desktop.
/*
* Copyright (c) 2005, 2013, 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 org.openjdk.jmh.samples;
import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
import org.openjdk.jmh.annotations.OperationsPerInvocation;
import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.State;
@State(Scope.Thread)
/**
* {@code java -ea -jar target/microbenchmarks.jar -tu us ".*Null2OptimisationsNull.*"}
*/
public class Null2OptimisationsNull {
int output = 0;
private Operations ops = new Operations();
@GenerateMicroBenchmark
public int testNullPresent() {
int output = this.output;
output = doTest(output, null);
output = doTest(output, ops);
return output;
}
@GenerateMicroBenchmark
public int testNullNull() {
int output = this.output;
output = doTest(output, null);
output = doTest(output, null);
return output;
}
@GenerateMicroBenchmark
public int testPresentPresent() {
int output = this.output;
output = doTest(output, ops);
output = doTest(output, ops);
return output;
}
private int doTest(int input, Operations o) {
int output = input;
if (o != null) {
output = o.op1(output);
} else {
output = ops.op2(output);
}
return output;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment