Priority: P2: Important
Affects Version/s: None
Fix Version/s: 5.3.0
Commits:717ae864d258568e3dc94cd2d43b7b9d6375a222 a32bed7047469273cc8513cad7b2923d60f8d590 f781d97e141632c646da09888c9612931f7c928b b287ed4c4dee9d705073badc79cdb0c3e183d19b 2ce7959eb9e69cd68013fc6a0f77a9556a84365b
Having the profiler itself be as optimized as possible allows it to provide a more accurate representation of the performance of a QML app. The profiler has undergone a number of revisions since it was initially introduced, and probably has additional opportunities for optimization at this point. For example:
- The profiler never sends messages directly; they are always queued.
- Can we delay more data conversions (QUrl->QString, char*->QString, etc) until sendMessages?
- Can we remove the overhead of an extra function call to processMessage (e.g. can it be made inline)?
- With many of the RAII structures it seems we are checking enabled multiple times. For example in the constructor/destructor and also in startRange/endRange. Can some checks be removed, or can we effectively use Q_LIKELY/Q_UNLIKELY here?
- Can messages be compressed? For example, can range start and location be compressed into a single event in most cases (instead of needing both startRange and rangeLocation)? Are rangeLocation and rangeData ever redundant?
|For Gerrit Dashboard: QTBUG-35315|
|74584,2||Switch QML profiler off when deleting QQmlProfilerService||stable||qt/qtdeclarative||Status: ABANDONED||+2||0|
|74585,2||Remove redundant copies of enabled flag in QML profiler||stable||qt/qtdeclarative||Status: MERGED||+2||0|
|74586,4||Make sure QQmlVmeProfiler methods can be inlined||stable||qt/qtdeclarative||Status: ABANDONED||+2||0|
|74587,13||Unify calls to profiler service event methods.||stable||qt/qtdeclarative||Status: ABANDONED||+2||0|
|74726,10||Put multiple QML profiling messages into one object where possible||stable||qt/qtdeclarative||Status: ABANDONED||+2||0|
|74800,5||Put calls to QQmlVmeProfiler behind "if (enabled)" macros||stable||qt/qtdeclarative||Status: ABANDONED||+2||0|
|75736,1||Switch QML profiler off when deleting QQmlProfilerService||dev||qt/qtdeclarative||Status: MERGED||+2||0|
|75737,1||Make sure QQmlVmeProfiler methods can be inlined||dev||qt/qtdeclarative||Status: MERGED||+2||0|
|75738,4||Unify calls to profiler service event methods.||dev||qt/qtdeclarative||Status: MERGED||+2||0|
|75739,2||Put multiple QML profiling messages into one object where possible||dev||qt/qtdeclarative||Status: MERGED||+2||0|
|75740,2||Put calls to QQmlVmeProfiler behind "if (enabled)" macros||dev||qt/qtdeclarative||Status: MERGED||+2||0|