Skip to content

Commit b4a0599

Browse files
committed
use fixed locale for formatting numbers in JS and Wasm, and add some KDoc for explanation
1 parent d6cc1b9 commit b4a0599

File tree

3 files changed

+11
-4
lines changed

3 files changed

+11
-4
lines changed

runtime/commonMain/src/kotlinx/benchmark/ReportBenchmarksStatistics.kt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,13 @@ class ReportBenchmarksStatistics(values: DoubleArray) {
8686
}
8787
}
8888

89+
/**
90+
* Pretty formats a number.
91+
*
92+
* The locale must be fixed, so that decimals will be consistently formatted.
93+
* - `.` - decimal separator
94+
* - `,` - thousands separator
95+
*/
8996
internal expect fun Double.format(precision: Int, useGrouping: Boolean = true): String
9097

9198
fun Double.formatSignificant(precision: Int): String {
@@ -126,7 +133,7 @@ fun Double.sampleToText(mode: Mode, unit: BenchmarkTimeUnit): String {
126133

127134
@Suppress("REDUNDANT_ELSE_IN_WHEN")
128135
fun Double.nanosToSample(mode: Mode, unit: BenchmarkTimeUnit): Double {
129-
val multiplier = unit.toMultiplier() // unit in nanos
136+
val multiplier = unit.toMultiplier() // unit in nanos
130137
return when (mode) {
131138
Mode.Throughput -> multiplier / this
132139
Mode.AverageTime -> this / multiplier

runtime/jsMain/src/kotlinx/benchmark/UtilsJs.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ internal actual fun Double.format(precision: Int, useGrouping: Boolean): String
55
options.minimumFractionDigits = precision
66
options.maximumFractionDigits = precision
77
options.useGrouping = useGrouping
8-
return this.asDynamic().toLocaleString(undefined, options) as String
8+
return this.asDynamic().toLocaleString("en-GB", options) as String
99
}
1010

1111
internal actual fun String.writeFile(text: String): Unit = jsEngineSupport.writeFile(this, text)

runtime/wasmJsMain/src/kotlinx/benchmark/Utils.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package kotlinx.benchmark
22

3-
@JsFun("(d, precision, useGrouping) => d.toLocaleString(undefined, { maximumFractionDigits: precision, minimumFractionDigits: precision, useGrouping: useGrouping } )")
3+
@JsFun("(d, precision, useGrouping) => d.toLocaleString('en-GB', { maximumFractionDigits: precision, minimumFractionDigits: precision, useGrouping: useGrouping } )")
44
private external fun format(d: Double, precision: Int, useGrouping: Boolean): String
55

66
internal actual fun Double.format(precision: Int, useGrouping: Boolean): String = format(this, precision, useGrouping)
@@ -31,4 +31,4 @@ internal val jsEngineSupport: JsEngineSupport by lazy {
3131
internal external interface ExternalInterfaceType
3232

3333
internal actual inline fun measureNanoseconds(block: () -> Unit): Long =
34-
if (isD8) d8MeasureTime(block) else nodeJsMeasureTime(block)
34+
if (isD8) d8MeasureTime(block) else nodeJsMeasureTime(block)

0 commit comments

Comments
 (0)