From 76f61468e69020bb42f8b726e78635ec4d4b8a57 Mon Sep 17 00:00:00 2001 From: jan Iversen Date: Mon, 28 May 2018 16:25:39 +0200 Subject: mobile: add timer to measure startup. Subsurface-mobile has a long startup time; in order to isolate the problem(s) a timer is added to see where time is "lost". The collected startup times are added to the clipboard together with the other logs, allowing test users to report back. All this is only enabled when compiling with -DENABLE_STARTUP_TIMING Closes #1340 [Dirk Hohndel: collapsed multiple commits and minor white space cleanups, added missing QMutex variable] Signed-off-by: Jan Iversen Signed-off-by: Dirk Hohndel --- subsurface-mobile-main.cpp | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'subsurface-mobile-main.cpp') diff --git a/subsurface-mobile-main.cpp b/subsurface-mobile-main.cpp index 878dc59ea..131e1d493 100644 --- a/subsurface-mobile-main.cpp +++ b/subsurface-mobile-main.cpp @@ -19,14 +19,50 @@ #include #include +// Implementation of STP logging +#include "core/ssrf.h" +#ifdef ENABLE_STARTUP_TIMING +#include +#include +#include +void log_stp(const char *ident, QString *buf) +{ + static bool firstCall = true; + static QElapsedTimer stpDuration; + static QString stpText; + static QMutex logMutex; + + QMutexLocker l(&logMutex); + + if (firstCall) { + firstCall = false; + stpDuration.start(); + } + if (ident) + stpText += QString("STP ") \ + .append(QString::number(stpDuration.elapsed())) \ + .append(" ms, ") \ + .append(ident) \ + .append("\n"); + if (buf) { + *buf += "---------- startup timer ----------\n"; + *buf += stpText; + } +} +#endif // ENABLE_STARTUP_TIMING + + int main(int argc, char **argv) { + LOG_STP("main starting"); + int i; QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QLoggingCategory::setFilterRules(QStringLiteral("qt.bluetooth* = true")); // Start application new QApplication(argc, argv); + LOG_STP("main Qt started"); // and get comand line arguments QStringList arguments = QCoreApplication::arguments(); @@ -41,6 +77,7 @@ int main(int argc, char **argv) } } git_libgit2_init(); + LOG_STP("main git loaded"); setup_system_prefs(); if (QLocale().measurementSystem() == QLocale::MetricSystem) default_prefs.units = SI_units; @@ -51,8 +88,11 @@ int main(int argc, char **argv) fill_computer_list(); parse_xml_init(); + LOG_STP("main xml parsed"); taglist_init_global(); + LOG_STP("main taglist done"); init_ui(); + LOG_STP("main init_ui done"); if (prefs.default_file_behavior == LOCAL_DEFAULT_FILE) set_filename(prefs.default_filename); else @@ -66,6 +106,7 @@ int main(int argc, char **argv) init_proxy(); + LOG_STP("main call run_ui (continue in qmlmanager)"); if (!quit) run_ui(); exit_ui(); -- cgit v1.2.3-70-g09d2