Report compiler performance data to ES
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
+9
-2
@@ -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 {
|
||||
|
||||
+5
-1
@@ -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()
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user