Skip to content

Commit eee5404

Browse files
committed
chore: incubator module support for kotlin benchmarks
1 parent b304118 commit eee5404

File tree

4 files changed

+17
-6
lines changed

4 files changed

+17
-6
lines changed

benchmarks/src/jvmMain/kotlin/JvmBenchmark.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,19 @@
11
package bench
22

3-
import java.util.concurrent.*
3+
import java.util.concurrent.TimeUnit
4+
import jdk.incubator.vector.LongVector
45
import org.openjdk.jmh.annotations.*
56

67
const val WARMUP_ITERATIONS = 20
78

89
@State(Scope.Benchmark)
9-
@Fork(1)
1010
@BenchmarkMode(Mode.AverageTime)
1111
@OutputTimeUnit(TimeUnit.NANOSECONDS)
1212
@Warmup(iterations = WARMUP_ITERATIONS, time = 1, timeUnit = TimeUnit.SECONDS)
1313
@Measurement(iterations = 1, time = 1, timeUnit = TimeUnit.SECONDS)
14+
@Fork(value = 1, jvmArgsAppend = ["--add-modules=jdk.incubator.vector"])
1415
class JvmTestBenchmark {
16+
1517
private var data = 0.0
1618

1719
@Setup
@@ -28,4 +30,6 @@ class JvmTestBenchmark {
2830
fun cosBenchmark(): Double {
2931
return Math.cos(data)
3032
}
33+
34+
@Benchmark fun vectorAPI() = LongVector.SPECIES_PREFERRED.length()
3135
}

gradle/build-logic/common-plugins/src/main/kotlin/common/KotlinExtns.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinDependencyHandler
1616
import org.jetbrains.kotlin.gradle.plugin.LanguageSettingsBuilder
1717
import org.jetbrains.kotlin.gradle.targets.js.npm.tasks.KotlinNpmInstallTask
1818
import org.jetbrains.kotlin.gradle.targets.jvm.tasks.KotlinJvmTest
19+
import org.jetbrains.kotlin.gradle.testing.internal.KotlinTestReport
1920
import java.nio.file.Path
2021

2122
/** Java version properties. */
@@ -188,6 +189,10 @@ fun KotlinJvmTest.configureKotlinTest() {
188189
configureJavaTest()
189190
}
190191

192+
context(Project)
193+
fun KotlinTestReport.configureTestReport() {
194+
}
195+
191196
context(Project)
192197
fun Test.configureJavaTest() {
193198
useJUnitPlatform()

gradle/build-logic/common-plugins/src/main/kotlin/plugins/kotlin.benchmark.gradle.kts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
package plugins
22

33
import common.libs
4-
import kotlinx.benchmark.gradle.BenchmarkTarget
5-
import kotlinx.benchmark.gradle.JvmBenchmarkTarget
6-
import kotlinx.benchmark.gradle.benchmark
4+
import kotlinx.benchmark.gradle.*
75
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
86

97
/**
@@ -36,7 +34,7 @@ benchmark {
3634
iterations = 5 // number of iterations
3735
iterationTime = 3 // time in seconds per iteration
3836
iterationTimeUnit = "ms"
39-
advanced("jvmForks", 3)
37+
advanced("jvmForks", "definedByJmh")
4038
advanced("jsUseBridge", true)
4139
}
4240
}
@@ -48,6 +46,8 @@ kotlin.sourceSets.named("commonMain") {
4846
dependencies { implementation(libs.kotlinx.bench.runtime) }
4947
}
5048

49+
tasks { withType(JmhBytecodeGeneratorTask::class) {} }
50+
5151
fun BenchmarkTarget.configureJmh() {
5252
this as JvmBenchmarkTarget
5353
jmhVersion = libs.versions.jmh.get()

gradle/build-logic/common-plugins/src/main/kotlin/plugins/kotlin.mpp.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,8 @@ kotlinMultiplatform.apply {
8383

8484
// distribution { outputDirectory = file("$projectDir/docs") }
8585
}
86+
87+
testRuns.configureEach { executionTask.configure { configureTestReport() } }
8688
}
8789

8890
// Disable wasm by default as some of the common dependencies are not compatible with wasm.

0 commit comments

Comments
 (0)