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