Report compiler performance data to ES

This commit is contained in:
nataliya.valtman
2021-07-28 05:42:15 +03:00
parent 7357aeb1c9
commit 260d301100
20 changed files with 136 additions and 29 deletions
@@ -9,10 +9,12 @@ import java.io.Serializable
data class BuildMetrics(
val buildTimes: BuildTimes = BuildTimes(),
val buildPerformanceMetrics: BuildPerformanceMetrics = BuildPerformanceMetrics(),
val buildAttributes: BuildAttributes = BuildAttributes()
) : Serializable {
fun addAll(other: BuildMetrics) {
buildTimes.addAll(other.buildTimes)
buildPerformanceMetrics.addAll(other.buildPerformanceMetrics)
buildAttributes.addAll(other.buildAttributes)
}
@@ -8,7 +8,9 @@ package org.jetbrains.kotlin.build.report.metrics
interface BuildMetricsReporter {
fun startMeasure(time: BuildTime, startNs: Long)
fun endMeasure(time: BuildTime, endNs: Long)
fun addMetric(metric: BuildTime, value: Long)
fun addTimeMetric(time: BuildTime, durationMs: Long)
fun addMetric(metric: BuildPerformanceMetric, value: Long)
fun addAttribute(attribute: BuildAttribute)
@@ -13,6 +13,7 @@ class BuildMetricsReporterImpl : BuildMetricsReporter {
BuildTime::class.java
)
private val myBuildTimes = BuildTimes()
private val myBuildMetrics = BuildPerformanceMetrics()
private val myBuildAttributes = BuildAttributes()
override fun startMeasure(time: BuildTime, startNs: Long) {
@@ -28,8 +29,12 @@ class BuildMetricsReporterImpl : BuildMetricsReporter {
myBuildTimes.add(time, durationMs)
}
override fun addMetric(metric: BuildTime, value: Long) {
myBuildTimes.add(metric, value)
override fun addTimeMetric(time: BuildTime, durationMs: Long) {
myBuildTimes.add(time, durationMs)
}
override fun addMetric(metric: BuildPerformanceMetric, value: Long) {
myBuildMetrics.add(metric, value)
}
override fun addAttribute(attribute: BuildAttribute) {
@@ -39,6 +44,7 @@ class BuildMetricsReporterImpl : BuildMetricsReporter {
override fun getMetrics(): BuildMetrics =
BuildMetrics(
buildTimes = myBuildTimes,
buildPerformanceMetrics = myBuildMetrics,
buildAttributes = myBuildAttributes
)
@@ -47,5 +53,6 @@ class BuildMetricsReporterImpl : BuildMetricsReporter {
myBuildAttributes.addAll(metrics.buildAttributes)
myBuildTimes.addAll(metrics.buildTimes)
myBuildMetrics.addAll(metrics.buildPerformanceMetrics)
}
}
@@ -0,0 +1,25 @@
/*
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.build.report.metrics
import java.io.Serializable
@Suppress("Reformat")
enum class BuildPerformanceMetric(val parent: BuildPerformanceMetric? = null, val readableString: String) : Serializable {
OUTPUT_SIZE(readableString = "Total output size"),
LOOKUP_SIZE(OUTPUT_SIZE, "Lookups size"),
SNAPSHOT_SIZE(OUTPUT_SIZE, "ABI snapshot size"),
;
companion object {
const val serialVersionUID = 0L
val children by lazy {
values().filter { it.parent != null }.groupBy { it.parent }
}
}
}
@@ -0,0 +1,30 @@
/*
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.build.report.metrics
import java.io.Serializable
import java.util.*
class BuildPerformanceMetrics : Serializable {
companion object {
const val serialVersionUID = 0L
}
private val myBuildMetrics = EnumMap<BuildPerformanceMetric, Long>(BuildPerformanceMetric::class.java)
fun addAll(other: BuildPerformanceMetrics) {
for ((bt, timeNs) in other.myBuildMetrics) {
add(bt, timeNs)
}
}
fun add(metric: BuildPerformanceMetric, value: Long) {
myBuildMetrics[metric] = myBuildMetrics.getOrDefault(metric, 0) + value
}
fun asMap(): Map<BuildPerformanceMetric, Long> = myBuildMetrics
}
@@ -38,9 +38,10 @@ enum class BuildTime(val parent: BuildTime? = null, val readableString: String)
INCREMENTAL_ITERATION(INCREMENTAL_COMPILATION, "Incremental iteration"),
NON_INCREMENTAL_ITERATION(INCREMENTAL_COMPILATION, "Non-incremental iteration"),
IC_WRITE_HISTORY_FILE(INCREMENTAL_COMPILATION, "Write history file"),
OUTPUT_SIZE(readableString = "Total output size"),
LOOKUP_SIZE(OUTPUT_SIZE, "Lookups size"),
SNAPSHOT_SIZE(OUTPUT_SIZE, "ABI snapshot size")
COMPILER_PERFORMANCE(readableString = "Compiler time"),
COMPILER_INITIALIZATION(COMPILER_PERFORMANCE, "Compiler initialization time"),
CODE_ANALYSIS(COMPILER_PERFORMANCE, "Compiler code analyse"),
CODE_GENERATION(COMPILER_PERFORMANCE, "Compiler code generation"),
;
companion object {
@@ -12,7 +12,10 @@ object DoNothingBuildMetricsReporter : BuildMetricsReporter {
override fun endMeasure(time: BuildTime, endNs: Long) {
}
override fun addMetric(time: BuildTime, value: Long) {
override fun addTimeMetric(time: BuildTime, durationMs: Long) {
}
override fun addMetric(metric: BuildPerformanceMetric, value: Long) {
}
override fun addAttribute(attribute: BuildAttribute) {
@@ -21,6 +24,7 @@ object DoNothingBuildMetricsReporter : BuildMetricsReporter {
override fun getMetrics(): BuildMetrics =
BuildMetrics(
BuildTimes(),
BuildPerformanceMetrics(),
BuildAttributes()
)