Skip to content

Commit bba9aea

Browse files
authored
Explicitly annotate all benchmark classes w/ State (#187)
Currently, not all benchmarks could be executed on native targets because only a few of them are explicitly annotated with @State. The majority of benchmarks inherit that annotation from a base class. It works fine w/ JMH, but doesn't work for native targets. The change will make all benchmarks executable on native targets.
1 parent af15db4 commit bba9aea

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

benchmarks/src/commonMain/kotlin/BufferOps.kt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ abstract class BufferRWBenchmarkBase {
3636
}
3737
}
3838

39+
@State(Scope.Benchmark)
3940
open class ByteBenchmark : BufferRWBenchmarkBase() {
4041
@Benchmark
4142
fun benchmark(): Byte {
@@ -44,6 +45,7 @@ open class ByteBenchmark : BufferRWBenchmarkBase() {
4445
}
4546
}
4647

48+
@State(Scope.Benchmark)
4749
open class ShortBenchmark : BufferRWBenchmarkBase() {
4850
@Benchmark
4951
fun benchmark(): Short {
@@ -52,6 +54,7 @@ open class ShortBenchmark : BufferRWBenchmarkBase() {
5254
}
5355
}
5456

57+
@State(Scope.Benchmark)
5558
open class IntBenchmark : BufferRWBenchmarkBase() {
5659
@Benchmark
5760
fun benchmark(): Int {
@@ -60,6 +63,7 @@ open class IntBenchmark : BufferRWBenchmarkBase() {
6063
}
6164
}
6265

66+
@State(Scope.Benchmark)
6367
open class LongBenchmark : BufferRWBenchmarkBase() {
6468
@Benchmark
6569
fun benchmark(): Long {
@@ -68,6 +72,7 @@ open class LongBenchmark : BufferRWBenchmarkBase() {
6872
}
6973
}
7074

75+
@State(Scope.Benchmark)
7176
open class ShortLeBenchmark : BufferRWBenchmarkBase() {
7277
@Benchmark
7378
fun benchmark(): Short {
@@ -76,6 +81,7 @@ open class ShortLeBenchmark : BufferRWBenchmarkBase() {
7681
}
7782
}
7883

84+
@State(Scope.Benchmark)
7985
open class IntLeBenchmark : BufferRWBenchmarkBase() {
8086
@Benchmark
8187
fun benchmark(): Int {
@@ -84,6 +90,7 @@ open class IntLeBenchmark : BufferRWBenchmarkBase() {
8490
}
8591
}
8692

93+
@State(Scope.Benchmark)
8794
open class LongLeBenchmark : BufferRWBenchmarkBase() {
8895
@Benchmark
8996
fun benchmark(): Long {
@@ -92,6 +99,7 @@ open class LongLeBenchmark : BufferRWBenchmarkBase() {
9299
}
93100
}
94101

102+
@State(Scope.Benchmark)
95103
open class DecimalLongBenchmark : BufferRWBenchmarkBase() {
96104
@Param("-9223372036854775806", "9223372036854775806", "1")
97105
var value = 0L
@@ -118,6 +126,7 @@ open class DecimalLongBenchmark : BufferRWBenchmarkBase() {
118126
}
119127
}
120128

129+
@State(Scope.Benchmark)
121130
open class HexadecimalLongBenchmark : BufferRWBenchmarkBase() {
122131
@Param("9223372036854775806", "1")
123132
var value = 0L
@@ -144,6 +153,7 @@ open class HexadecimalLongBenchmark : BufferRWBenchmarkBase() {
144153

145154
// This benchmark is based on Okio benchmark:
146155
// https://raw.githubusercontent.com/square/okio/master/okio/jvm/jmh/src/jmh/java/com/squareup/okio/benchmarks/BufferUtf8Benchmark.java
156+
@State(Scope.Benchmark)
147157
open class Utf8StringBenchmark : BufferRWBenchmarkBase() {
148158
private val strings = mapOf(
149159
"ascii" to ("Um, I'll tell you the problem with the scientific power that you're using here, "
@@ -219,6 +229,7 @@ open class Utf8StringBenchmark : BufferRWBenchmarkBase() {
219229
}
220230
}
221231

232+
@State(Scope.Benchmark)
222233
open class Utf8LineBenchmarkBase : BufferRWBenchmarkBase() {
223234
@Param("17")
224235
var length: Int = 0
@@ -254,6 +265,7 @@ open class Utf8LineBenchmarkBase : BufferRWBenchmarkBase() {
254265
}
255266
}
256267

268+
@State(Scope.Benchmark)
257269
open class Utf8LineBenchmark : Utf8LineBenchmarkBase() {
258270
@Benchmark
259271
fun benchmark(): String? {
@@ -262,6 +274,7 @@ open class Utf8LineBenchmark : Utf8LineBenchmarkBase() {
262274
}
263275
}
264276

277+
@State(Scope.Benchmark)
265278
open class Utf8LineStrictBenchmark : Utf8LineBenchmarkBase() {
266279
@Benchmark
267280
fun benchmark(): String {
@@ -331,6 +344,7 @@ open class BufferGetBenchmark {
331344
fun get() = buffer[offset]
332345
}
333346

347+
@State(Scope.Benchmark)
334348
open class BufferReadWriteByteArray : BufferRWBenchmarkBase() {
335349
private var inputArray = ByteArray(0)
336350
private var outputArray = ByteArray(0)
@@ -352,6 +366,7 @@ open class BufferReadWriteByteArray : BufferRWBenchmarkBase() {
352366
}
353367
}
354368

369+
@State(Scope.Benchmark)
355370
open class BufferReadNewByteArray : BufferRWBenchmarkBase() {
356371
private var inputArray = ByteArray(0)
357372

benchmarks/src/commonMain/kotlin/PeekBenchmark.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,9 @@
55

66
package kotlinx.io.benchmarks
77

8-
import kotlinx.io.*
98
import kotlinx.benchmark.*
9+
import kotlinx.io.Buffer
10+
import kotlinx.io.Source
1011

1112
const val OFFSET_TO_LAST_BYTE_IN_SEGMENT = (SEGMENT_SIZE_IN_BYTES - 1).toString()
1213

@@ -31,21 +32,25 @@ abstract class PeekBenchmark {
3132
}
3233
}
3334

35+
@State(Scope.Benchmark)
3436
open class PeekByteBenchmark : PeekBenchmark() {
3537
@Benchmark
3638
fun benchmark() = peek().readByte()
3739
}
3840

41+
@State(Scope.Benchmark)
3942
open class PeekShortBenchmark : PeekBenchmark() {
4043
@Benchmark
4144
fun benchmark() = peek().readShort()
4245
}
4346

47+
@State(Scope.Benchmark)
4448
open class PeekIntBenchmark : PeekBenchmark() {
4549
@Benchmark
4650
fun benchmark() = peek().readInt()
4751
}
4852

53+
@State(Scope.Benchmark)
4954
open class PeekLongBenchmark : PeekBenchmark() {
5055
@Benchmark
5156
fun benchmark() = peek().readLong()

0 commit comments

Comments
 (0)