1+ plugins {
2+ id ' org.jetbrains.kotlin.jvm' version ' 1.3.40'
3+ }
4+
5+ repositories {
6+ mavenCentral()
7+ jcenter()
8+ maven { url ' https://dl.bintray.com/orangy/maven' }
9+ }
10+
11+ dependencies {
12+ implementation " org.jetbrains.kotlin:kotlin-stdlib"
13+ implementation ' org.openjdk.jmh:jmh-core:1.21'
14+
15+ runtimeOnly project(path : ' :benchmarks-mpp' , configuration : ' benchmarksJar' )
16+ runtimeOnly project(path : ' :kotlinx-collections-immutable' )
17+ }
18+
19+ // map
20+ task benchmarkHashMap (type : JavaExec , group : " Benchmark" ) {
21+ main = ' runners.HashMapRunnerKt'
22+ }
23+
24+ task benchmarkHashMapBuilder (type : JavaExec , group : " Benchmark" ) {
25+ main = ' runners.HashMapBuilderRunnerKt'
26+ }
27+
28+ task benchmarkOrderedMap (type : JavaExec , group : " Benchmark" ) {
29+ main = ' runners.OrderedMapRunnerKt'
30+ }
31+
32+ task benchmarkOrderedMapBuilder (type : JavaExec , group : " Benchmark" ) {
33+ main = ' runners.OrderedMapBuilderRunnerKt'
34+ }
35+
36+ task benchmarkAllMaps (group : " Benchmark" ) {
37+ dependsOn benchmarkHashMap
38+ dependsOn benchmarkHashMapBuilder
39+ dependsOn benchmarkOrderedMap
40+ dependsOn benchmarkOrderedMapBuilder
41+ }
42+
43+ // set
44+ task benchmarkHashSet (type : JavaExec , group : " Benchmark" ) {
45+ main = ' runners.HashSetRunnerKt'
46+ }
47+
48+ task benchmarkHashSetBuilder (type : JavaExec , group : " Benchmark" ) {
49+ main = ' runners.HashSetBuilderRunnerKt'
50+ }
51+
52+ task benchmarkOrderedSet (type : JavaExec , group : " Benchmark" ) {
53+ main = ' runners.OrderedSetRunnerKt'
54+ }
55+
56+ task benchmarkOrderedSetBuilder (type : JavaExec , group : " Benchmark" ) {
57+ main = ' runners.OrderedSetBuilderRunnerKt'
58+ }
59+
60+ task benchmarkAllSets (group : " Benchmark" ) {
61+ dependsOn benchmarkHashSet
62+ dependsOn benchmarkHashSetBuilder
63+ dependsOn benchmarkOrderedSet
64+ dependsOn benchmarkOrderedSetBuilder
65+ }
66+
67+ // list
68+ task benchmarkList (type : JavaExec , group : " Benchmark" ) {
69+ main = ' runners.ListRunnerKt'
70+ }
71+
72+ task benchmarkListBuilder (type : JavaExec , group : " Benchmark" ) {
73+ main = ' runners.ListBuilderRunnerKt'
74+ }
75+
76+ task benchmarkAllLists (group : " Benchmark" ) {
77+ dependsOn benchmarkList
78+ dependsOn benchmarkListBuilder
79+ }
80+
81+ // all
82+ task benchmarkAll (group : " Benchmark" ) {
83+ dependsOn benchmarkAllMaps
84+ dependsOn benchmarkAllSets
85+ dependsOn benchmarkAllLists
86+ }
87+
88+
89+ // configure runner tasks
90+
91+ def benchmarkParams = [
92+ ' remote' ,
93+ ' forks' ,
94+ ' measurementIterations' ,
95+ ' measurementTime' ,
96+ ' warmupIterations' ,
97+ ' warmupTime' ,
98+ // 'exclude',
99+ // 'include',
100+ ' size' ,
101+ ' hashCodeType' ,
102+ ' immutablePercentage'
103+ ]
104+
105+ tasks. withType(JavaExec ) {
106+ if (group == " Benchmark" ) {
107+ classpath = sourceSets. main. runtimeClasspath
108+
109+ benchmarkParams. forEach { param ->
110+ if (project. hasProperty(param)) {
111+ systemProperty(param, project. property(param))
112+ }
113+ }
114+ }
115+ }
0 commit comments