From f44b2fe9cf191afb30344cd7b869291cd24a2c71 Mon Sep 17 00:00:00 2001 From: Timur Valeev Date: Fri, 21 Aug 2026 15:20:31 +0100 Subject: [PATCH] Removing flaky test --- ...tToStringVsStringBuilderPerformanceTest.kt | 108 ------------------ 1 file changed, 108 deletions(-) delete mode 100644 dd-sdk-android-core/src/test/kotlin/com/datadog/android/utils/JointToStringVsStringBuilderPerformanceTest.kt diff --git a/dd-sdk-android-core/src/test/kotlin/com/datadog/android/utils/JointToStringVsStringBuilderPerformanceTest.kt b/dd-sdk-android-core/src/test/kotlin/com/datadog/android/utils/JointToStringVsStringBuilderPerformanceTest.kt deleted file mode 100644 index 6f3b8acd40..0000000000 --- a/dd-sdk-android-core/src/test/kotlin/com/datadog/android/utils/JointToStringVsStringBuilderPerformanceTest.kt +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0. - * This product includes software developed at Datadog (https://www.datadoghq.com/). - * Copyright 2016-Present Datadog, Inc. - */ -package com.datadog.android.utils - -import com.datadog.android.internal.utils.appendIfNotEmpty -import fr.xgouchet.elmyr.Forge -import fr.xgouchet.elmyr.junit5.ForgeExtension -import org.assertj.core.api.Assertions.assertThat -import org.junit.jupiter.api.Test -import org.junit.jupiter.api.extension.ExtendWith -import org.junit.jupiter.api.extension.Extensions -import kotlin.math.pow -import kotlin.math.round -import kotlin.math.sqrt -import kotlin.system.measureNanoTime - -@Extensions( - ExtendWith(ForgeExtension::class) -) -internal class JointToStringVsStringBuilderPerformanceTest { - - @Test - fun `M be faster than joinToString W buildString`(forge: Forge) { - val itemsForJoin = forge.aList(ITEMS_TO_JOIN) { forge.aString() } - val joinToStringExecutionTime = mutableListOf() - val buildStringExecutionTime = mutableListOf() - - var jointToStringResult: String - var builderResult: String - - repeat(REPETITION_COUNT) { - joinToStringExecutionTime.add( - measureNanoTime { - val jointToStringContainer = mutableListOf() - for (item in itemsForJoin) { - jointToStringContainer.add(item) - } - jointToStringResult = jointToStringContainer.joinToString(separator = " ") { it } - } - ) - - buildStringExecutionTime.add( - measureNanoTime { - builderResult = buildString { - itemsForJoin.forEach { item -> appendIfNotEmpty(' ').append(item) } - } - } - ) - - assertThat(builderResult).isEqualTo(jointToStringResult) // same result - } - - val statisticsReport = ( - "buildString:\n" + - " mean = ${buildStringExecutionTime.mean}\n" + - " std = ${buildStringExecutionTime.std}\n" + - " cv = ${"%.2f".format(buildStringExecutionTime.cv)}%\n" + - " p50 = ${buildStringExecutionTime.percentile(50)}\n" + - " p90 = ${buildStringExecutionTime.percentile(90)}\n" + - " p95 = ${buildStringExecutionTime.percentile(95)}\n" + - " p99 = ${buildStringExecutionTime.percentile(99)}\n" + - "\n" + - "joinToString:\n" + - " mean = ${joinToStringExecutionTime.mean}\n" + - " std = ${joinToStringExecutionTime.std}\n" + - " cv = ${"%.2f".format(joinToStringExecutionTime.cv)}%\n" + - " p50 = ${joinToStringExecutionTime.percentile(50)},\n" + - " p90 = ${joinToStringExecutionTime.percentile(90)},\n" + - " p95 = ${joinToStringExecutionTime.percentile(95)},\n" + - " p99 = ${joinToStringExecutionTime.percentile(99)}\n" - ) - - assertThat( - buildStringExecutionTime.percentile(90) - ).withFailMessage( - statisticsReport - ).isLessThan( - joinToStringExecutionTime.percentile(90) - ) - } - - companion object { - private const val ITEMS_TO_JOIN = 10_000 - private const val REPETITION_COUNT = 10_000 - - private val List.mean - get() = (sum().toDouble() / size) - - private val List.std: Double - get() { - val m = mean - return sqrt( - sumOf { (it - m).pow(2.0) } / size - ) - } - - private val List.cv: Double - get() = std / mean * 100.0 - - private fun List.percentile(k: Int): Long { - val p = (k / 100.0) * (size + 1) - return sorted()[round(p).toInt()] - } - } -}