Skip to content

Commit cb93cf6

Browse files
committed
move all data to be initialized in setup (WhenBenchmark)
1 parent 641aa4c commit cb93cf6

File tree

1 file changed

+40
-27
lines changed

1 file changed

+40
-27
lines changed

src/commonMain/kotlin/microBenchmarks/WhenBenchmark.kt

Lines changed: 40 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,17 @@ import kotlinx.benchmark.*
55
@State(Scope.Benchmark)
66
class WhenBenchmark {
77

8-
private val integers = 100500..100510
9-
private val shorts = (10500..10510).map { it.toShort() }
10-
private val bytes = (100..110).map { it.toByte() }
11-
private val chars = 'a'..'k'
12-
private val strings = ('a' .. 'k').flatMap {a -> ('a' .. 'k').map { b -> "$a$b" } }
8+
private lateinit var integers: List<Int>
9+
private lateinit var shorts: List<Short>
10+
private lateinit var bytes: List<Byte>
11+
private lateinit var chars: List<Char>
12+
private lateinit var strings: List<String>
1313

14-
private val floatConst = 1.123.toFloat()
15-
private val doubleConst = 1.123456789123456
14+
private var floatConst: Float = 0F
15+
private var doubleConst: Double = 0.0
1616

17-
private val floats = (1..10).map { it * floatConst }
18-
private val doubles = (1..10).map { it * doubleConst }
17+
private lateinit var floats: List<Float>
18+
private lateinit var doubles: List<Double>
1919

2020
private val integersData = mutableListOf<Int>()
2121
private val shortsData = mutableListOf<Short>()
@@ -27,26 +27,39 @@ class WhenBenchmark {
2727

2828
@Setup
2929
fun setup() {
30+
31+
integers = (100500..100510).toList()
32+
shorts = (10500..10510).map { it.toShort() }
33+
bytes = (100..110).map { it.toByte() }
34+
chars = ('a'..'k').toList()
35+
strings = ('a' .. 'k').flatMap { a -> ('a' .. 'k').map { b -> "$a$b" } }
36+
37+
floatConst = 1.123F
38+
doubleConst = 1.123456789123456
39+
40+
floats = (1..10).map { it * floatConst }
41+
doubles = (1..10).map { it * doubleConst }
42+
3043
for (i in 1..BENCHMARK_SIZE) {
31-
charsData.add(chars.random())
32-
shortsData.add(shorts.random())
33-
bytesData.add(bytes.random())
34-
integersData.add(integers.random())
35-
stringsData.add(strings.random())
36-
floatsData.add(floats.random())
37-
doublesData.add(doubles.random())
44+
charsData.add(chars[i % chars.size])
45+
shortsData.add(shorts[i % shorts.size])
46+
bytesData.add(bytes[i % bytes.size])
47+
integersData.add(integers[i % integers.size])
48+
stringsData.add(strings[i % strings.size])
49+
floatsData.add(floats[i % floats.size])
50+
doublesData.add(doubles[i % doubles.size])
3851
}
3952
}
4053

4154
@Benchmark
4255
fun charWhenDense(): Int {
4356
var sum = 0
4457
for (char in charsData) {
45-
when(char) {
46-
'a' -> sum += 13
47-
'c' -> sum += 91
48-
'e' -> sum += 34
49-
else -> sum += 29
58+
sum += when(char) {
59+
'a' -> 13
60+
'c' -> 91
61+
'e' -> 34
62+
else -> 29
5063
}
5164
}
5265
return sum
@@ -169,9 +182,9 @@ class WhenBenchmark {
169182
var sum = 0
170183
for (float in floatsData) {
171184
sum += when(float) {
172-
floatConst -> 13
173-
floatConst * 3 -> 91
174-
floatConst * 4 -> 34
185+
1.123F -> 13
186+
3.369F -> 91
187+
4.492F -> 34
175188
else -> 29
176189
}
177190
}
@@ -183,9 +196,9 @@ class WhenBenchmark {
183196
var sum = 0
184197
for (double in doublesData) {
185198
sum += when(double) {
186-
doubleConst -> 13
187-
doubleConst * 3 -> 91
188-
doubleConst * 4 -> 34
199+
1.123 -> 13
200+
3.369 -> 91
201+
4.492 -> 34
189202
else -> 29
190203
}
191204
}

0 commit comments

Comments
 (0)