recover deleted JMH tests

update gradle and other third-party libs
This commit is contained in:
2019-08-22 19:57:27 +02:00
parent 506fb7b698
commit 0311ecd83c
6 changed files with 164 additions and 15 deletions

View File

@@ -1,8 +1,20 @@
plugins {
// usage: gradle dependencyUpdates -Drevision=release buildscript {
id "com.github.ben-manes.versions" version "0.20.0" repositories {
maven {
url "https://plugins.gradle.org/m2/"
}
jcenter()
}
dependencies {
classpath "me.champeau.gradle:jmh-gradle-plugin:0.5.0-rc-2"
}
} }
plugins {
// usage: gradle dependencyUpdates -Drevision=release
id "com.github.ben-manes.versions" version "0.22.0"
}
apply plugin: 'java' apply plugin: 'java'
apply plugin: 'eclipse' apply plugin: 'eclipse'
@@ -14,6 +26,7 @@ subprojects {
apply plugin: 'eclipse' apply plugin: 'eclipse'
apply plugin: 'maven' apply plugin: 'maven'
apply plugin: 'maven-publish' apply plugin: 'maven-publish'
apply plugin: 'me.champeau.gradle.jmh'
// java compatibility version // java compatibility version
sourceCompatibility = 10 sourceCompatibility = 10
@@ -31,9 +44,9 @@ subprojects {
uploadArchives { uploadArchives {
repositories { repositories {
mavenDeployer { mavenDeployer {
if (!project.hasProperty('mavenDeployRepo')){ if (!project.hasProperty('mavenDeployRepo')){
throw new IllegalStateException("Set the property 'mavenDeployRepo' to the repository URL. A good place is ~/.gradle/gradle.properties") throw new IllegalStateException("Set the property 'mavenDeployRepo' to the repository URL. A good place is ~/.gradle/gradle.properties")
} }
repository(url: "${mavenDeployRepo}") repository(url: "${mavenDeployRepo}")
println "publishing to: ${mavenDeployRepo}" println "publishing to: ${mavenDeployRepo}"
} }
@@ -52,16 +65,23 @@ subprojects {
// dependencies that all sub-projects have // dependencies that all sub-projects have
dependencies { dependencies {
testCompile 'org.junit.jupiter:junit-jupiter-api:5.4.2' testCompile 'org.junit.jupiter:junit-jupiter-api:5.5.1'
testRuntime 'org.junit.jupiter:junit-jupiter-engine:5.4.2' testRuntime 'org.junit.jupiter:junit-jupiter-engine:5.5.1'
testRuntime 'org.junit.platform:junit-platform-launcher:1.4.2' // needed by eclipse testRuntime 'org.junit.platform:junit-platform-launcher:1.5.1' // needed by eclipse
} }
test { test {
useJUnitPlatform() useJUnitPlatform()
} }
jmh {
//jvmArgsAppend = ""
resultFormat = "JSON"
//include = ['.*Union.*'] // include pattern (regular expression) for benchmarks to be executed
//exclude = ['some regular expression'] // exclude pattern (regular expression) for benchmarks to be executed
}
} }
wrapper() { wrapper() {
gradleVersion = '5.4.1' gradleVersion = '5.6'
} }

View File

@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-5.6-bin.zip
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists

6
gradlew vendored
View File

@@ -7,7 +7,7 @@
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
# You may obtain a copy of the License at # You may obtain a copy of the License at
# #
# http://www.apache.org/licenses/LICENSE-2.0 # https://www.apache.org/licenses/LICENSE-2.0
# #
# Unless required by applicable law or agreed to in writing, software # Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, # distributed under the License is distributed on an "AS IS" BASIS,
@@ -125,8 +125,8 @@ if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi fi
# For Cygwin, switch paths to Windows format before running java # For Cygwin or MSYS, switch paths to Windows format before running java
if $cygwin ; then if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"` APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
JAVACMD=`cygpath --unix "$JAVACMD"` JAVACMD=`cygpath --unix "$JAVACMD"`

2
gradlew.bat vendored
View File

@@ -5,7 +5,7 @@
@rem you may not use this file except in compliance with the License. @rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at @rem You may obtain a copy of the License at
@rem @rem
@rem http://www.apache.org/licenses/LICENSE-2.0 @rem https://www.apache.org/licenses/LICENSE-2.0
@rem @rem
@rem Unless required by applicable law or agreed to in writing, software @rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS, @rem distributed under the License is distributed on an "AS IS" BASIS,

View File

@@ -0,0 +1,59 @@
package org.lucares.collections;
import java.util.concurrent.TimeUnit;
import java.util.stream.IntStream;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.BenchmarkMode;
import org.openjdk.jmh.annotations.Fork;
import org.openjdk.jmh.annotations.Measurement;
import org.openjdk.jmh.annotations.Mode;
import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.Setup;
import org.openjdk.jmh.annotations.State;
import org.openjdk.jmh.annotations.TearDown;
import org.openjdk.jmh.annotations.Warmup;
@State(Scope.Benchmark)
@BenchmarkMode(Mode.Throughput)
@Warmup(iterations = 5, time = 1, timeUnit = TimeUnit.SECONDS)
@Measurement(iterations = 5, time = 1, timeUnit = TimeUnit.SECONDS)
@Fork(1)
public class BenchmarkRemoveAll {
private IntList base = null;
private IntList remove = null;
@Setup
public void setup() throws Exception {
final int values = 10_000;
base = IntList.of();
IntStream.range(0, values).forEachOrdered(i -> base.add(i));
base.sort();
remove = IntList.of();
IntStream.range(0, 50).forEachOrdered(i -> remove.add(i));
remove.sort();
}
@TearDown
public void tearDown() {
base = null;
remove = null;
}
@Benchmark
public void testRemoveAll() throws Exception {
final IntList tmp = base.clone();
tmp.removeAll(remove);
}
@Benchmark
public void testRemoveAll_withRemoveIf() throws Exception {
final IntList tmp = base.clone();
tmp.removeIf((val, index) -> remove.indexOf(val) >= 0);
}
}

View File

@@ -0,0 +1,70 @@
package org.lucares.collections;
import java.util.concurrent.TimeUnit;
import java.util.stream.IntStream;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.BenchmarkMode;
import org.openjdk.jmh.annotations.Fork;
import org.openjdk.jmh.annotations.Measurement;
import org.openjdk.jmh.annotations.Mode;
import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.Setup;
import org.openjdk.jmh.annotations.State;
import org.openjdk.jmh.annotations.TearDown;
import org.openjdk.jmh.annotations.Warmup;
@State(Scope.Benchmark)
@BenchmarkMode(Mode.Throughput)
@Warmup(iterations = 10, time = 1, timeUnit = TimeUnit.SECONDS)
@Measurement(iterations = 5, time = 1, timeUnit = TimeUnit.SECONDS)
@Fork(1)
public class BenchmarkUnionIntersection {
private IntList aSorted = null;
private IntList bSorted = null;
private IntList cUnsorted = null;
private IntList dUnsorted = null;
@Setup
public void setup() throws Exception {
final int values = 10_000;
aSorted = IntList.of();
IntStream.range(0, values).forEachOrdered(aSorted::add);
aSorted.sort();
bSorted = IntList.of();
IntStream.range(0, values).forEachOrdered(bSorted::add);
bSorted.sort();
cUnsorted = IntList.of();
IntStream.range(0, values).forEachOrdered(cUnsorted::add);
cUnsorted.shuffle();
dUnsorted = IntList.of();
IntStream.range(0, values).forEachOrdered(dUnsorted::add);
dUnsorted.shuffle();
}
@TearDown
public void tearDown() {
aSorted = null;
bSorted = null;
cUnsorted = null;
dUnsorted = null;
}
@Benchmark
public void testUnionSortedLists() throws Exception {
IntList.union(aSorted, bSorted);
}
@Benchmark
public void testIntersectionSortedLists() throws Exception {
IntList.intersection(aSorted, bSorted);
}
}