Skip to content

Commit e22ed23

Browse files
authored
Add ability to specify frame counts to measure as a benchmarks launch parameter (#5204)
## Release Notes N/A
1 parent 29863d1 commit e22ed23

File tree

2 files changed

+17
-3
lines changed

2 files changed

+17
-3
lines changed

benchmarks/multiplatform/benchmarks/src/commonMain/kotlin/Args.kt

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,21 @@ enum class Mode {
77
object Args {
88
private val modes = mutableSetOf<Mode>()
99

10-
private val benchmarks = mutableSetOf<String>()
10+
private val benchmarks = mutableMapOf<String, Int>()
1111

1212
private fun argToSet(arg: String): Set<String> = arg.substring(arg.indexOf('=') + 1)
1313
.split(",").filter{!it.isEmpty()}.map{it.uppercase()}.toSet()
1414

1515

16+
private fun argToMap(arg: String): Map<String, Int> = arg.substring(arg.indexOf('=') + 1)
17+
.split(",").filter { !it.isEmpty() }.map { it.uppercase() }.associate {
18+
if (it.contains('(') && it.contains(')')) {
19+
it.substringBefore('(') to it.substringAfter('(').substringBefore(')').toInt()
20+
} else {
21+
it to -1
22+
}
23+
}
24+
1625
/**
1726
* Parses command line arguments to determine modes and benchmarks settings.
1827
*
@@ -25,12 +34,17 @@ object Args {
2534
if (arg.startsWith("modes=", ignoreCase = true)) {
2635
modes.addAll(argToSet(arg).map { Mode.valueOf(it) })
2736
} else if (arg.startsWith("benchmarks=", ignoreCase = true)) {
28-
benchmarks.addAll(argToSet(arg))
37+
benchmarks += argToMap(arg)
2938
}
3039
}
3140
}
3241

3342
fun isModeEnabled(mode: Mode): Boolean = modes.isEmpty() || modes.contains(mode)
3443

3544
fun isBenchmarkEnabled(benchmark: String): Boolean = benchmarks.isEmpty() || benchmarks.contains(benchmark.uppercase())
45+
46+
fun getBenchmarkProblemSize(benchmark: String, default: Int): Int {
47+
val result = benchmarks[benchmark.uppercase()]?: -1
48+
return if (result == -1) default else result
49+
}
3650
}

benchmarks/multiplatform/benchmarks/src/commonMain/kotlin/Benchmarks.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ suspend fun runBenchmark(
148148
) {
149149
if (Args.isBenchmarkEnabled(name)) {
150150
println("$name:")
151-
val stats = measureComposable(warmupCount, frameCount, width, height, targetFps, graphicsContext, content).generateStats()
151+
val stats = measureComposable(warmupCount, Args.getBenchmarkProblemSize(name, frameCount), width, height, targetFps, graphicsContext, content).generateStats()
152152
stats.prettyPrint()
153153
}
154154
}

0 commit comments

Comments
 (0)