From 26f91aeb379024f7b3585bda7ee587e1b57af6b3 Mon Sep 17 00:00:00 2001 From: kiramt Date: Fri, 11 Aug 2017 14:41:40 +0100 Subject: [PATCH] JAL-2662 First attempt to set up JMH hidden columns benchmark --- benchmarking/.classpath | 28 ++++ benchmarking/.gitignore | 1 + .../.settings/org.eclipse.core.resources.prefs | 3 + benchmarking/.settings/org.eclipse.jdt.core.prefs | 5 + benchmarking/.settings/org.eclipse.m2e.core.prefs | 4 + benchmarking/pom.xml | 171 ++++++++++++++++++++ .../java/org/jalview/HiddenColumnsBenchmark.java | 83 ++++++++++ 7 files changed, 295 insertions(+) create mode 100644 benchmarking/.classpath create mode 100644 benchmarking/.gitignore create mode 100644 benchmarking/.settings/org.eclipse.core.resources.prefs create mode 100644 benchmarking/.settings/org.eclipse.jdt.core.prefs create mode 100644 benchmarking/.settings/org.eclipse.m2e.core.prefs create mode 100644 benchmarking/pom.xml create mode 100644 benchmarking/src/main/java/org/jalview/HiddenColumnsBenchmark.java diff --git a/benchmarking/.classpath b/benchmarking/.classpath new file mode 100644 index 0000000..131ff24 --- /dev/null +++ b/benchmarking/.classpath @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/benchmarking/.gitignore b/benchmarking/.gitignore new file mode 100644 index 0000000..b83d222 --- /dev/null +++ b/benchmarking/.gitignore @@ -0,0 +1 @@ +/target/ diff --git a/benchmarking/.settings/org.eclipse.core.resources.prefs b/benchmarking/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..e9441bb --- /dev/null +++ b/benchmarking/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,3 @@ +eclipse.preferences.version=1 +encoding//src/main/java=UTF-8 +encoding/=UTF-8 diff --git a/benchmarking/.settings/org.eclipse.jdt.core.prefs b/benchmarking/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..714351a --- /dev/null +++ b/benchmarking/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,5 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/benchmarking/.settings/org.eclipse.m2e.core.prefs b/benchmarking/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..f897a7f --- /dev/null +++ b/benchmarking/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/benchmarking/pom.xml b/benchmarking/pom.xml new file mode 100644 index 0000000..5ca96f6 --- /dev/null +++ b/benchmarking/pom.xml @@ -0,0 +1,171 @@ + + + + 4.0.0 + + org.jalview + benchmarking + 1.0-SNAPSHOT + jar + + JMH benchmark sample: Java + + + + + + org.openjdk.jmh + jmh-core + ${jmh.version} + + + org.openjdk.jmh + jmh-generator-annprocess + ${jmh.version} + provided + + + + + UTF-8 + + + 1.19 + + + 1.8 + + + benchmarks + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.1 + + ${javac.target} + ${javac.target} + ${javac.target} + + + + org.apache.maven.plugins + maven-shade-plugin + 2.2 + + + package + + shade + + + ${uberjar.name} + + + org.openjdk.jmh.Main + + + + + + *:* + + META-INF/*.SF + META-INF/*.DSA + META-INF/*.RSA + + + + + + + + + + + + maven-clean-plugin + 2.5 + + + maven-deploy-plugin + 2.8.1 + + + maven-install-plugin + 2.5.1 + + + maven-jar-plugin + 2.4 + + + maven-javadoc-plugin + 2.9.1 + + + maven-resources-plugin + 2.6 + + + maven-site-plugin + 3.3 + + + maven-source-plugin + 2.2.1 + + + maven-surefire-plugin + 2.17 + + + + + + diff --git a/benchmarking/src/main/java/org/jalview/HiddenColumnsBenchmark.java b/benchmarking/src/main/java/org/jalview/HiddenColumnsBenchmark.java new file mode 100644 index 0000000..ffeb613 --- /dev/null +++ b/benchmarking/src/main/java/org/jalview/HiddenColumnsBenchmark.java @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2014, Oracle America, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Oracle nor the names of its contributors may be used + * to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +package org.jalview; + +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.TearDown; +import org.openjdk.jmh.annotations.Scope; +import java.util.Random; + +import jalview.datamodel.HiddenColumns; + +public class HiddenColumnsBenchmark +{ + @State(Scope.Thread) + public static class ThreadState + { + HiddenColumns h = new HiddenColumns(); + int MAXCOLS = 100000; + Random rand = new Random(); + + @Setup + public void setup() + { + rand.setSeed(1234); + for (int i=0; i