From d9ed0cc75af35f29829f13f93fe6a6b6f85d0e23 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Tue, 29 Aug 2023 11:46:13 +0200 Subject: [PATCH] ExtensionSystem: Include phase breakdown in profiling summary Makes it easier to find where bottlenecks are, as a hint where to actually start profiling. Change-Id: I00b881583c2c25b13f6e287b39b6b83299ac6674 Reviewed-by: Cristian Adam Reviewed-by: Reviewed-by: Qt CI Bot --- src/libs/extensionsystem/pluginmanager.cpp | 5 +++-- src/libs/extensionsystem/pluginspec.h | 8 ++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/libs/extensionsystem/pluginmanager.cpp b/src/libs/extensionsystem/pluginmanager.cpp index 959cfb7d284..b4b8b9f245e 100644 --- a/src/libs/extensionsystem/pluginmanager.cpp +++ b/src/libs/extensionsystem/pluginmanager.cpp @@ -1803,10 +1803,11 @@ QString PluginManagerPrivate::profilingSummary(qint64 *totalOut) const if (!s->isEffectivelyEnabled()) continue; const qint64 t = s->performanceData().total(); - summary += QString("%1 %2ms ( %3% )\n") + summary += QString("%1 %2ms ( %3% ) (%4)\n") .arg(s->name(), -22) .arg(t, 8) - .arg(100.0 * t / total, 5, 'f', 2); + .arg(100.0 * t / total, 5, 'f', 2) + .arg(s->performanceData().summary()); } summary += QString("Total plugins: %1ms\n").arg(total, 8); summary += QString("Total startup: %1ms\n").arg(m_totalStartupMS, 8); diff --git a/src/libs/extensionsystem/pluginspec.h b/src/libs/extensionsystem/pluginspec.h index 43e39efeb1b..6030bc568e4 100644 --- a/src/libs/extensionsystem/pluginspec.h +++ b/src/libs/extensionsystem/pluginspec.h @@ -61,6 +61,14 @@ struct EXTENSIONSYSTEM_EXPORT PerformanceData qint64 delayedInitialize = 0; qint64 total() const { return load + initialize + extensionsInitialized + delayedInitialize; } + QString summary() const + { + return QString("l: %1ms, i: %2ms, x: %3ms, d: %4ms") + .arg(load, 3) + .arg(initialize, 3) + .arg(extensionsInitialized, 3) + .arg(delayedInitialize, 3); + } }; class EXTENSIONSYSTEM_EXPORT PluginSpec