From 1a84ae038df0757f44d890ad3d5b2e055d5dda7e Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Fri, 19 Jan 2024 15:31:22 +0100 Subject: [PATCH] Build nanotrace profiling by default And enable its availability for startup performance measurement. Makes it possible to run with `-trace `, creating a CTF for startup performance, without requiring a special QtC build. Usage in QmlDesigner/DesignStudio is guarded by an additional DESIGNSTUDIO_USE_NANOTRACE CMake option (default off), since that adds a menu item that should usually not be shown. Change-Id: I87200745cc32f256bcaaba21f139b4104459e49a Reviewed-by: hjk Reviewed-by: Reviewed-by: Knud Dollereder --- src/libs/nanotrace/CMakeLists.txt | 8 +++++++- .../interfaces/nodeinstanceglobal.h | 2 +- .../designercore/instances/baseconnectionmanager.cpp | 2 +- .../designercore/instances/nodeinstanceserverproxy.cpp | 2 +- .../qml2puppet/instances/nodeinstanceclientproxy.cpp | 6 +++--- .../qml2puppet/instances/nodeinstanceserver.cpp | 2 +- .../qml2puppet/instances/qt5nodeinstanceserver.cpp | 2 +- 7 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/libs/nanotrace/CMakeLists.txt b/src/libs/nanotrace/CMakeLists.txt index c504a112e37..f2fa830e2d3 100644 --- a/src/libs/nanotrace/CMakeLists.txt +++ b/src/libs/nanotrace/CMakeLists.txt @@ -1,5 +1,4 @@ add_qtc_library(Nanotrace - BUILD_DEFAULT OFF PUBLIC_DEFINES NANOTRACE_ENABLED SOURCES nanotraceglobals.h @@ -10,3 +9,10 @@ add_qtc_library(Nanotrace CXX_VISIBILITY_PRESET default VISIBILITY_INLINES_HIDDEN OFF ) + +option(DESIGNSTUDIO_USE_NANOTRACE + "Enables collecting performance data with nanotrace for Design Studio" OFF) +extend_qtc_library(Nanotrace + CONDITION DESIGN_STUDIO_USE_NANOTRACE + PUBLIC_DEFINES NANOTRACE_DESIGNSTUDIO_ENABLED +) diff --git a/src/libs/qmlpuppetcommunication/interfaces/nodeinstanceglobal.h b/src/libs/qmlpuppetcommunication/interfaces/nodeinstanceglobal.h index aefaeb88e3f..d5a715f1d86 100644 --- a/src/libs/qmlpuppetcommunication/interfaces/nodeinstanceglobal.h +++ b/src/libs/qmlpuppetcommunication/interfaces/nodeinstanceglobal.h @@ -54,7 +54,7 @@ enum class View3DActionType { constexpr bool isNanotraceEnabled() { -#ifdef NANOTRACE_ENABLED +#ifdef NANOTRACE_DESIGNSTUDIO_ENABLED return true; #else return false; diff --git a/src/plugins/qmldesigner/designercore/instances/baseconnectionmanager.cpp b/src/plugins/qmldesigner/designercore/instances/baseconnectionmanager.cpp index 39da5f99ba7..713a61abf3d 100644 --- a/src/plugins/qmldesigner/designercore/instances/baseconnectionmanager.cpp +++ b/src/plugins/qmldesigner/designercore/instances/baseconnectionmanager.cpp @@ -106,7 +106,7 @@ void BaseConnectionManager::readDataStream(Connection &connection) in >> command; connection.blockSize = 0; -#ifdef NANOTRACE_ENABLED +#ifdef NANOTRACE_DESIGNSTUDIO_ENABLED if (command.typeId() != QMetaType::type("PuppetAliveCommand")) { if (command.typeId() == QMetaType::type("SyncNanotraceCommand")) { SyncNanotraceCommand cmd = command.value(); diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp index 7e65f9ce341..a519531d3cc 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp @@ -172,7 +172,7 @@ QString NodeInstanceServerProxy::qrcMappingString() const void NodeInstanceServerProxy::writeCommand(const QVariant &command) { -#ifdef NANOTRACE_ENABLED +#ifdef NANOTRACE_DESIGNSTUDIO_ENABLED if (command.typeId() == QMetaType::type("SyncNanotraceCommand")) { SyncNanotraceCommand cmd = command.value(); NANOTRACE_INSTANT_ARGS("Sync", "writeCommand", diff --git a/src/tools/qml2puppet/instances/nodeinstanceclientproxy.cpp b/src/tools/qml2puppet/instances/nodeinstanceclientproxy.cpp index 1afdd52bb0c..a7ab2bf8737 100644 --- a/src/tools/qml2puppet/instances/nodeinstanceclientproxy.cpp +++ b/src/tools/qml2puppet/instances/nodeinstanceclientproxy.cpp @@ -58,7 +58,7 @@ // Nanotrace headers are not exported to build dir at all if the feature is disabled, so // runtime puppet build can't find them. -#if NANOTRACE_ENABLED +#if NANOTRACE_DESIGNSTUDIO_ENABLED #include "nanotrace/nanotrace.h" #else #define NANOTRACE_INIT(process, thread, filepath) @@ -185,7 +185,7 @@ void NodeInstanceClientProxy::writeCommand(const QVariant &command) exit(-1); } } else if (m_outputIoDevice) { -#ifdef NANOTRACE_ENABLED +#ifdef NANOTRACE_DESIGNSTUDIO_ENABLED if (command.typeId() != QMetaType::type("PuppetAliveCommand")) { if (command.typeId() == QMetaType::type("SyncNanotraceCommand")) { SyncNanotraceCommand cmd = command.value(); @@ -390,7 +390,7 @@ void NodeInstanceClientProxy::readDataStream() static quint32 blockSize = 0; QVariant command = readCommandFromIOStream(m_inputIoDevice, &readCommandCounter, &blockSize); -#ifdef NANOTRACE_ENABLED +#ifdef NANOTRACE_DESIGNSTUDIO_ENABLED if (command.typeId() != QMetaType::type("EndNanotraceCommand")) { if (command.typeId() == QMetaType::type("SyncNanotraceCommand")) { SyncNanotraceCommand cmd = command.value(); diff --git a/src/tools/qml2puppet/qml2puppet/instances/nodeinstanceserver.cpp b/src/tools/qml2puppet/qml2puppet/instances/nodeinstanceserver.cpp index 46a8c605320..f3227e386cc 100644 --- a/src/tools/qml2puppet/qml2puppet/instances/nodeinstanceserver.cpp +++ b/src/tools/qml2puppet/qml2puppet/instances/nodeinstanceserver.cpp @@ -50,7 +50,7 @@ // Nanotrace headers are not exported to build dir at all if the feature is disabled, so // runtime puppet build can't find them. -#if NANOTRACE_ENABLED +#if NANOTRACE_DESIGNSTUDIO_ENABLED #include "nanotrace/nanotrace.h" #else #define NANOTRACE_SCOPE(cat, name) diff --git a/src/tools/qml2puppet/qml2puppet/instances/qt5nodeinstanceserver.cpp b/src/tools/qml2puppet/qml2puppet/instances/qt5nodeinstanceserver.cpp index 968f86ca6f7..fca884e94b3 100644 --- a/src/tools/qml2puppet/qml2puppet/instances/qt5nodeinstanceserver.cpp +++ b/src/tools/qml2puppet/qml2puppet/instances/qt5nodeinstanceserver.cpp @@ -19,7 +19,7 @@ // Nanotrace headers are not exported to build dir at all if the feature is disabled, so // runtime puppet build can't find them. -#if NANOTRACE_ENABLED +#if NANOTRACE_DESIGNSTUDIO_ENABLED #include "nanotrace/nanotrace.h" #else #define NANOTRACE_SCOPE(cat, name)