diff --git a/platform/lang-impl/src/com/intellij/util/indexing/diagnostic/IndexDiagnosticJson.kt b/platform/lang-impl/src/com/intellij/util/indexing/diagnostic/IndexDiagnosticJson.kt index 3463af60acca..13496c349b63 100644 --- a/platform/lang-impl/src/com/intellij/util/indexing/diagnostic/IndexDiagnosticJson.kt +++ b/platform/lang-impl/src/com/intellij/util/indexing/diagnostic/IndexDiagnosticJson.kt @@ -41,6 +41,7 @@ data class JsonTime(val nano: Long) { @JsonSerialize(using = JsonTimeStats.Companion::class) data class JsonTimeStats( + val partOfTotal: Int, // Percentages: 0 to 100. val minTime: JsonTime, val maxTime: JsonTime, val meanTime: JsonTime, @@ -49,6 +50,13 @@ data class JsonTimeStats( companion object : JsonSerializer() { override fun serialize(value: JsonTimeStats, gen: JsonGenerator, serializers: SerializerProvider?) { val s = buildString { + append("part: ") + if (value.partOfTotal < 1) { + append("< 1%; ") + } + else { + append("${value.partOfTotal}%; ") + } append("max: ${value.maxTime.presentableDuration()}; ") append("mean: ${value.meanTime.presentableDuration()}; ") append("median: ${value.medianTime.presentableDuration()}; ") @@ -59,11 +67,18 @@ data class JsonTimeStats( } } -fun TimeStats.toTimeStats(): JsonTimeStats? { +fun TimeStats.toTimeStats(totalTime: TimeNano): JsonTimeStats? { if (isEmpty) { return null } + val partOfTotal = if (totalTime == 0L) { + 100 + } + else { + ((sumTime.toDouble() / totalTime) * 100).toInt() + } return JsonTimeStats( + partOfTotal, JsonTime(minTime), JsonTime(maxTime), JsonTime(meanTime.toLong()), @@ -85,7 +100,6 @@ private fun getMedianOfArray(elements: Collection): Double { data class JsonFileProviderIndexStatistics( val providerName: String, val totalNumberOfFiles: Int, - // = + +