From b161f7076f461ceb1da845b02000e0b8c5724f72 Mon Sep 17 00:00:00 2001 From: Aleksandr Shefer Date: Wed, 17 Dec 2025 12:08:02 +0100 Subject: [PATCH 1/2] benchmarks with StringBuilder and String.plus similar to string interpolation benchmark --- .../kotlin/microBenchmarks/StringBenchmark.kt | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/src/commonMain/kotlin/microBenchmarks/StringBenchmark.kt b/src/commonMain/kotlin/microBenchmarks/StringBenchmark.kt index 4bee5e2..f0be1db 100644 --- a/src/commonMain/kotlin/microBenchmarks/StringBenchmark.kt +++ b/src/commonMain/kotlin/microBenchmarks/StringBenchmark.kt @@ -143,4 +143,48 @@ class StringBenchmark { } return sum } + + @Benchmark + fun stringBuilderCompareWithInterpolation(): Int { + var sum = 0 + var i = 0 + var j = 0 + while (i < BENCHMARK_SIZE) { + val add1 = stringsInterpolation[j] + j = (j + 1) and 15 + val add2 = stringsInterpolation[j] + j = (j + 1) and 15 + val add3 = stringsInterpolation[j] + j = (j + 1) and 15 + val builder = StringBuilder(add1) + builder.append(add2) + builder.append(add3) + val string = builder.toString() + sum += string.length + i++ + } + return sum + } + + @Benchmark + fun stringPlusCompareWithInterpolation(): Int { + var sum = 0 + var i = 0 + var j = 0 + while (i < BENCHMARK_SIZE) { + val add1 = stringsInterpolation[j] + j = (j + 1) and 15 + val add2 = stringsInterpolation[j] + j = (j + 1) and 15 + val add3 = stringsInterpolation[j] + j = (j + 1) and 15 + var string = add1 + string = string.plus(add2) + string = string.plus(add3) + sum += string.length + i++ + } + return sum + } + } \ No newline at end of file From cacd3507dffee1dc5eeb9d916c20606d83d274b0 Mon Sep 17 00:00:00 2001 From: Aleksandr Shefer Date: Thu, 18 Dec 2025 09:07:47 +0100 Subject: [PATCH 2/2] fixup! benchmarks with StringBuilder and String.plus similar to string interpolation benchmark --- src/commonMain/kotlin/microBenchmarks/StringBenchmark.kt | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/commonMain/kotlin/microBenchmarks/StringBenchmark.kt b/src/commonMain/kotlin/microBenchmarks/StringBenchmark.kt index f0be1db..63ae58c 100644 --- a/src/commonMain/kotlin/microBenchmarks/StringBenchmark.kt +++ b/src/commonMain/kotlin/microBenchmarks/StringBenchmark.kt @@ -178,9 +178,7 @@ class StringBenchmark { j = (j + 1) and 15 val add3 = stringsInterpolation[j] j = (j + 1) and 15 - var string = add1 - string = string.plus(add2) - string = string.plus(add3) + val string = add1 + add2 + add3 sum += string.length i++ }