From 79fff92dc1c5e80a7c7e45b1e96dab7c007085e7 Mon Sep 17 00:00:00 2001 From: "nataliya.valtman" Date: Tue, 14 Mar 2023 01:30:55 +0100 Subject: [PATCH] Don't use aggregated GC metric for build reports --- .../kotlin/build/report/metrics/GcMetrics.kt | 11 ++++++++++- .../gradle/report/PlainTextBuildReportWriter.kt | 16 +++++++++------- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/build-common/src/org/jetbrains/kotlin/build/report/metrics/GcMetrics.kt b/build-common/src/org/jetbrains/kotlin/build/report/metrics/GcMetrics.kt index c56249a8186..64a020fcbb8 100644 --- a/build-common/src/org/jetbrains/kotlin/build/report/metrics/GcMetrics.kt +++ b/build-common/src/org/jetbrains/kotlin/build/report/metrics/GcMetrics.kt @@ -12,7 +12,10 @@ class GcMetrics : Serializable { private val myGcMetrics = HashMap() fun addAll(gcMetrics: GcMetrics) { - myGcMetrics.putAll(gcMetrics.myGcMetrics) + gcMetrics.myGcMetrics.forEach { (key, value) -> + val gcMetric = myGcMetrics[key] + myGcMetrics[key] = gcMetric?.let { gcMetric + value } ?: value + } } fun add(metric: String, value: GcMetric) { @@ -22,6 +25,8 @@ class GcMetrics : Serializable { fun asGcCountMap(): Map = myGcMetrics.mapValues { it.value.count } fun asGcTimeMap(): Map = myGcMetrics.mapValues { it.value.time } fun asMap(): Map = myGcMetrics + + fun isEmpty() = myGcMetrics.isEmpty() } data class GcMetric( val time: Long, @@ -30,4 +35,8 @@ data class GcMetric( operator fun minus(increment: GcMetric): GcMetric { return GcMetric(time - increment.time, count - increment.count) } + + operator fun plus(increment: GcMetric?): GcMetric { + return GcMetric(time + (increment?.time ?: 0), count + (increment?.count ?: 0)) + } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/PlainTextBuildReportWriter.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/PlainTextBuildReportWriter.kt index 42fb9c7821c..067afd22695 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/PlainTextBuildReportWriter.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/PlainTextBuildReportWriter.kt @@ -52,7 +52,7 @@ internal class PlainTextBuildReportWriter( // TODO: If it is confusing, consider renaming "tasks" to "build operations" in this class. printBuildInfo(build) if (printMetrics) { - printMetrics(build.aggregatedMetrics, newLineBetweenSections = true) + printMetrics(build.aggregatedMetrics, aggregatedMetric = true) p.println() } printTaskOverview(build) @@ -77,17 +77,19 @@ internal class PlainTextBuildReportWriter( } } - private fun printMetrics(buildMetrics: BuildMetrics, newLineBetweenSections: Boolean = false) { + private fun printMetrics(buildMetrics: BuildMetrics, aggregatedMetric: Boolean = false) { printBuildTimes(buildMetrics.buildTimes) - if (newLineBetweenSections) p.println() + if (aggregatedMetric) p.println() printBuildPerformanceMetrics(buildMetrics.buildPerformanceMetrics) - if (newLineBetweenSections) p.println() + if (aggregatedMetric) p.println() printBuildAttributes(buildMetrics.buildAttributes) - if (newLineBetweenSections) p.println() - printGcMetrics(buildMetrics.gcMetrics) + //TODO: KT-57310 Implement build GC metric in + if (!aggregatedMetric) { + printGcMetrics(buildMetrics.gcMetrics) + } } private fun printBuildTimes(buildTimes: BuildTimes) { @@ -173,7 +175,7 @@ internal class PlainTextBuildReportWriter( p.println("${gcMetric.key}:") p.withIndent { p.println("GC count: ${gcMetric.value.count}") - p.println("GC time: ${gcMetric.value.time}") + p.println("GC time: ${formatTime(gcMetric.value.time)}") } } }