FIR: Add init time measurement to full pipeline
This commit is contained in:
committed by
Denis.Zharkov
parent
991e5210ba
commit
0aca68e7c7
@@ -13,7 +13,7 @@ class JitCompilationMeasurement(private val milliseconds: Long) : PerformanceMea
|
|||||||
override fun render(): String = "JIT time is $milliseconds ms"
|
override fun render(): String = "JIT time is $milliseconds ms"
|
||||||
}
|
}
|
||||||
|
|
||||||
class CompilerInitializationMeasurement(private val milliseconds: Long) : PerformanceMeasurement {
|
class CompilerInitializationMeasurement(val milliseconds: Long) : PerformanceMeasurement {
|
||||||
override fun render(): String = "INIT: Compiler initialized in $milliseconds ms"
|
override fun render(): String = "INIT: Compiler initialized in $milliseconds ms"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+7
-2
@@ -28,6 +28,7 @@ class FullPipelineModularizedTest : AbstractModularizedTest() {
|
|||||||
|
|
||||||
private data class CumulativeTime(
|
private data class CumulativeTime(
|
||||||
val gcInfo: Map<String, GCInfo>,
|
val gcInfo: Map<String, GCInfo>,
|
||||||
|
val init: Long,
|
||||||
val analysis: Long,
|
val analysis: Long,
|
||||||
val translation: Long,
|
val translation: Long,
|
||||||
val lowering: Long,
|
val lowering: Long,
|
||||||
@@ -35,13 +36,14 @@ class FullPipelineModularizedTest : AbstractModularizedTest() {
|
|||||||
val files: Int,
|
val files: Int,
|
||||||
val lines: Int
|
val lines: Int
|
||||||
) {
|
) {
|
||||||
constructor() : this(emptyMap(), 0, 0, 0, 0, 0, 0)
|
constructor() : this(emptyMap(), 0, 0, 0, 0, 0, 0, 0)
|
||||||
|
|
||||||
operator fun plus(other: CumulativeTime): CumulativeTime {
|
operator fun plus(other: CumulativeTime): CumulativeTime {
|
||||||
return CumulativeTime(
|
return CumulativeTime(
|
||||||
(gcInfo.values + other.gcInfo.values).groupingBy { it.name }.reduce { key, accumulator, element ->
|
(gcInfo.values + other.gcInfo.values).groupingBy { it.name }.reduce { key, accumulator, element ->
|
||||||
GCInfo(key, accumulator.gcTime + element.gcTime, accumulator.collections + element.collections)
|
GCInfo(key, accumulator.gcTime + element.gcTime, accumulator.collections + element.collections)
|
||||||
},
|
},
|
||||||
|
init + other.init,
|
||||||
analysis + other.analysis,
|
analysis + other.analysis,
|
||||||
translation + other.translation,
|
translation + other.translation,
|
||||||
lowering + other.lowering,
|
lowering + other.lowering,
|
||||||
@@ -51,7 +53,7 @@ class FullPipelineModularizedTest : AbstractModularizedTest() {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun totalTime() = analysis + translation + lowering + generation
|
fun totalTime() = init + analysis + translation + lowering + generation
|
||||||
}
|
}
|
||||||
|
|
||||||
private lateinit var totalPassResult: CumulativeTime
|
private lateinit var totalPassResult: CumulativeTime
|
||||||
@@ -126,6 +128,7 @@ class FullPipelineModularizedTest : AbstractModularizedTest() {
|
|||||||
linePerSecondCell(lines, timeMs, timeUnit = MS)
|
linePerSecondCell(lines, timeMs, timeUnit = MS)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
phase("Init", total.init, total.files, total.lines)
|
||||||
phase("Analysis", total.analysis, total.files, total.lines)
|
phase("Analysis", total.analysis, total.files, total.lines)
|
||||||
phase("Translation", total.translation, total.files, total.lines)
|
phase("Translation", total.translation, total.files, total.lines)
|
||||||
phase("Lowering", total.lowering, total.files, total.lines)
|
phase("Lowering", total.lowering, total.files, total.lines)
|
||||||
@@ -262,10 +265,12 @@ class FullPipelineModularizedTest : AbstractModularizedTest() {
|
|||||||
.associate { it.garbageCollectionKind to GCInfo(it.garbageCollectionKind, it.milliseconds, it.count) }
|
.associate { it.garbageCollectionKind to GCInfo(it.garbageCollectionKind, it.milliseconds, it.count) }
|
||||||
|
|
||||||
val analysisMeasurement = measurements.filterIsInstance<CodeAnalysisMeasurement>().firstOrNull()
|
val analysisMeasurement = measurements.filterIsInstance<CodeAnalysisMeasurement>().firstOrNull()
|
||||||
|
val initMeasurement = measurements.filterIsInstance<CompilerInitializationMeasurement>().firstOrNull()
|
||||||
val irMeasurements = measurements.filterIsInstance<IRMeasurement>()
|
val irMeasurements = measurements.filterIsInstance<IRMeasurement>()
|
||||||
|
|
||||||
return CumulativeTime(
|
return CumulativeTime(
|
||||||
gcInfo,
|
gcInfo,
|
||||||
|
initMeasurement?.milliseconds ?: 0,
|
||||||
analysisMeasurement?.milliseconds ?: 0,
|
analysisMeasurement?.milliseconds ?: 0,
|
||||||
irMeasurements.firstOrNull { it.kind == IRMeasurement.Kind.TRANSLATION }?.milliseconds ?: 0,
|
irMeasurements.firstOrNull { it.kind == IRMeasurement.Kind.TRANSLATION }?.milliseconds ?: 0,
|
||||||
irMeasurements.firstOrNull { it.kind == IRMeasurement.Kind.LOWERING }?.milliseconds ?: 0,
|
irMeasurements.firstOrNull { it.kind == IRMeasurement.Kind.LOWERING }?.milliseconds ?: 0,
|
||||||
|
|||||||
Reference in New Issue
Block a user