Skip to content

Commit

Permalink
Move getListOfIndexingMetrics to IndexingMetrics
Browse files Browse the repository at this point in the history
GitOrigin-RevId: a7b7792c602bae92f9547fc03e9b140c8543084c
  • Loading branch information
kornilova203 authored and intellij-monorepo-bot committed Feb 15, 2025
1 parent 927a7eb commit c639d9b
Showing 1 changed file with 10 additions and 36 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,34 +5,23 @@ import com.intellij.tools.ide.metrics.collector.metrics.MetricsSelectionStrategy
import com.intellij.tools.ide.metrics.collector.metrics.PerformanceMetrics
import com.intellij.tools.ide.metrics.collector.starter.collector.StarterTelemetryJsonMeterCollector
import com.intellij.util.indexing.diagnostic.IndexDiagnosticDumper
import com.intellij.util.indexing.diagnostic.dto.IndexingMetric
import com.intellij.util.indexing.diagnostic.dto.IndexingMetrics
import com.intellij.util.indexing.diagnostic.dto.getListOfIndexingMetrics
import java.nio.file.Files
import java.util.concurrent.TimeUnit
import kotlin.io.path.div
import kotlin.io.path.extension
import kotlin.io.path.name

fun IndexingMetrics.getListOfIndexingMetrics(ideStartResult: IDEStartResult): List<PerformanceMetrics.Metric> {
val numberOfIndexedFiles = totalNumberOfIndexedFiles
val numberOfFilesFullyIndexedByExtensions = totalNumberOfFilesFullyIndexedByExtensions
return listOf(
PerformanceMetrics.newDuration("indexingTimeWithoutPauses", durationMillis = totalIndexingTimeWithoutPauses.toInt()),
PerformanceMetrics.newDuration("scanningTimeWithoutPauses", durationMillis = totalScanFilesTimeWithoutPauses.toInt()),
PerformanceMetrics.newDuration("pausedTimeInIndexingOrScanning", durationMillis = totalPausedTime.toInt()),
PerformanceMetrics.newDuration("dumbModeTimeWithPauses", durationMillis = totalDumbModeTimeWithPauses.toInt()),
PerformanceMetrics.newCounter("numberOfIndexedFiles", value = numberOfIndexedFiles),
PerformanceMetrics.newCounter("numberOfIndexedFilesWritingIndexValue", value = totalNumberOfIndexedFilesWritingIndexValues),
PerformanceMetrics.newCounter("numberOfIndexedFilesWithNothingToWrite", value = totalNumberOfIndexedFilesWithNothingToWrite),
PerformanceMetrics.newCounter("numberOfFilesIndexedByExtensions", value = numberOfFilesFullyIndexedByExtensions),
PerformanceMetrics.newCounter("numberOfFilesIndexedWithoutExtensions",
value = (numberOfIndexedFiles - numberOfFilesFullyIndexedByExtensions)),
PerformanceMetrics.newCounter("numberOfRunsOfScannning", value = totalNumberOfRunsOfScanning),
PerformanceMetrics.newCounter("numberOfRunsOfIndexing", value = totalNumberOfRunsOfIndexing)
) + getProcessingSpeedOfFileTypes(processingSpeedPerFileTypeAvg, "Avg") +
getProcessingSpeedOfFileTypes(processingSpeedPerFileTypeWorst, "Worst") +
getProcessingSpeedOfBaseLanguages(processingSpeedPerBaseLanguageAvg, "Avg") +
getProcessingSpeedOfBaseLanguages(processingSpeedPerBaseLanguageWorst, "Worst") +
getProcessingTimeOfFileType(processingTimePerFileType) +
fun IndexingMetrics.getListOfIndexingAndIdeMetrics(ideStartResult: IDEStartResult): List<PerformanceMetrics.Metric> {
val indexingMetrics = getListOfIndexingMetrics().map {
when (it) {
is IndexingMetric.Duration -> PerformanceMetrics.newDuration(it.name, it.durationMillis)
is IndexingMetric.Counter -> PerformanceMetrics.newCounter(it.name, it.value)
}
}
return indexingMetrics +
collectPerformanceMetricsFromCSV(ideStartResult, "lexer", "lexing") +
collectPerformanceMetricsFromCSV(ideStartResult, "parser", "parsing")
}
Expand Down Expand Up @@ -83,18 +72,3 @@ fun extractIndexingMetrics(startResult: IDEStartResult, projectName: String? = n
return IndexingMetrics(jsonIndexDiagnostics)
}

private fun getProcessingSpeedOfFileTypes(mapFileTypeToSpeed: Map<String, Int>, suffix: String): List<PerformanceMetrics.Metric> =
mapFileTypeToSpeed.map {
PerformanceMetrics.newCounter("processingSpeed$suffix#${it.key}", value = it.value)
}

private fun getProcessingSpeedOfBaseLanguages(mapBaseLanguageToSpeed: Map<String, Int>, suffix: String): List<PerformanceMetrics.Metric> =
mapBaseLanguageToSpeed.map {
PerformanceMetrics.newCounter("processingSpeedOfBaseLanguage$suffix#${it.key}", value = it.value)
}

private fun getProcessingTimeOfFileType(mapFileTypeToDuration: Map<String, Long>): List<PerformanceMetrics.Metric> =
mapFileTypeToDuration.map {
PerformanceMetrics.newDuration("processingTime#${it.key}", durationMillis = TimeUnit.NANOSECONDS.toMillis(it.value.toLong()).toInt())
}

0 comments on commit c639d9b

Please sign in to comment.