[watcher]Added ability to create span in PerformanceWatcher

GitOrigin-RevId: 6e8471045d166c54eb76ce0b4ad4c528a2b29c0e
This commit is contained in:
Nikita Barkov
2024-07-29 13:48:38 +02:00
committed by intellij-monorepo-bot
parent 205d72171a
commit d458e5c2da
3 changed files with 25 additions and 3 deletions

View File

@@ -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 {

View File

@@ -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)}"
}

View File

@@ -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() {