diff --git a/platform/ide-core-impl/src/com/intellij/diagnostic/PerformanceWatcher.kt b/platform/ide-core-impl/src/com/intellij/diagnostic/PerformanceWatcher.kt index e872c408c499..88f0667b8f88 100644 --- a/platform/ide-core-impl/src/com/intellij/diagnostic/PerformanceWatcher.kt +++ b/platform/ide-core-impl/src/com/intellij/diagnostic/PerformanceWatcher.kt @@ -11,7 +11,11 @@ abstract class PerformanceWatcher { interface Snapshot { fun logResponsivenessSinceCreation(activityName: @NonNls String) + fun logResponsivenessSinceCreation(activityName: @NonNls String, withSpan: Boolean) + fun getLogResponsivenessSinceCreationMessage(activityName: @NonNls String): String? + + fun getLogResponsivenessSinceCreationMessage(activityName: @NonNls String, withSpan: Boolean): String? } companion object { diff --git a/platform/platform-impl/src/com/intellij/diagnostic/PerformanceWatcherImpl.kt b/platform/platform-impl/src/com/intellij/diagnostic/PerformanceWatcherImpl.kt index c91ea95c5e72..ac4b11d45282 100644 --- a/platform/platform-impl/src/com/intellij/diagnostic/PerformanceWatcherImpl.kt +++ b/platform/platform-impl/src/com/intellij/diagnostic/PerformanceWatcherImpl.kt @@ -24,6 +24,8 @@ import com.intellij.openapi.util.io.FileUtilRt import com.intellij.openapi.util.io.NioFiles import com.intellij.openapi.util.registry.RegistryManager import com.intellij.openapi.util.text.StringUtilRt +import com.intellij.platform.diagnostic.telemetry.Scope +import com.intellij.platform.diagnostic.telemetry.TelemetryManager import com.intellij.util.SystemProperties import com.intellij.util.concurrency.AppExecutorUtil import com.intellij.util.concurrency.AppScheduledExecutorService @@ -415,11 +417,27 @@ internal class PerformanceWatcherImpl(private val coroutineScope: CoroutineScope private val startMillis = System.currentTimeMillis() override fun logResponsivenessSinceCreation(activityName: @NonNls String) { - LOG.info(getLogResponsivenessSinceCreationMessage(activityName)) + logResponsivenessSinceCreation(activityName, false) + } + + override fun logResponsivenessSinceCreation(activityName: @NonNls String, withSpan: Boolean) { + LOG.info(getLogResponsivenessSinceCreationMessage(activityName, withSpan)) } override fun getLogResponsivenessSinceCreationMessage(activityName: @NonNls String): String { - return "$activityName took ${System.currentTimeMillis() - startMillis}ms; general responsiveness: ${ + return getLogResponsivenessSinceCreationMessage(activityName, false) + } + + override fun getLogResponsivenessSinceCreationMessage(activityName: @NonNls String, withSpan: Boolean): String { + val currentTime = System.currentTimeMillis() + if (withSpan) { + TelemetryManager.getTracer(Scope("PerformanceWatcher")) + .spanBuilder(activityName) + .setStartTimestamp(startMillis, TimeUnit.MILLISECONDS) + .startSpan() + .end(currentTime, TimeUnit.MILLISECONDS) + } + return "$activityName took ${currentTime - startMillis}ms; general responsiveness: ${ watcher.generalApdex.summarizePerformanceSince(startGeneralSnapshot) }; EDT responsiveness: ${watcher.swingApdex.summarizePerformanceSince(startSwingSnapshot)}" } diff --git a/platform/usageView-impl/src/com/intellij/usages/impl/SearchForUsagesRunnable.java b/platform/usageView-impl/src/com/intellij/usages/impl/SearchForUsagesRunnable.java index f209cb10676c..de2f5ec50c3b 100644 --- a/platform/usageView-impl/src/com/intellij/usages/impl/SearchForUsagesRunnable.java +++ b/platform/usageView-impl/src/com/intellij/usages/impl/SearchForUsagesRunnable.java @@ -356,7 +356,7 @@ final class SearchForUsagesRunnable implements Runnable { searchUsages(); endSearchForUsages(); - snapshot.logResponsivenessSinceCreation("Find Usages in " + myProject.getName()); + snapshot.logResponsivenessSinceCreation("Find Usages in " + myProject.getName(), true); } private void searchUsages() {