Using the QML profiler

ulf's picture

Ulf Hermann
Europe Date: 
Wednesday, October 8, 2014 -
3:00pm to 4:00pm
Europe Room: 
Europe Track: 
Europe Presentation PDF: 

Presenter Bio: 

Ulf Hermann has a degree in computer science from the Humboldt University in Berlin and has been working at Digia since November 2013. He has written the JavaScript execution and memory profilers for the V4 engine to complement the QML profiler and has since been optimizing the it to be able to process larger traces in acceptable time. Some of that experience will be shared in the session.


Finding performance bottlenecks in complex QML-heavy applications is challenging as most profiling tools aren't able to correlate the QML and JavaScript code with events recorded from a running application. The most common problem is the lack of symbolic information for JIT-compiled or interpreted code and thus the best estimate you get for the source of a problem is often "somewhere in the QML engine". Furthermore, in order to analyze intermediate drops in frame rates, it's vital to correlate a measurement of the framerate not with the code being executed at that point in time, but with the code that caused the delay before frames had to be dropped. The QML profiler solves these problems by using the profiling interface integrated in QtQuick and can thus give you valuable insights into the internals of QtQuick applications.

After the introduction of the V4 engine in Qt some additional functionality regarding that has been added to QtQML, QtQuick and the QML Profiler. You can now get precise data for the execution times of every JavaScript function call as well as detailed traces of Memory allocations on the JavaScript heap.

The presentation will start out with a description of typical problems you may face when optimizing QML-heavy applications. Then it will give a general overview of the QML profiler and and how it can help you analyze those problems. Finally, I will demonstrate some actual use cases. Some of those casees will be hands-on examples of real performance problems that were solved with the QML profiler and some, to put things into perspective, will be problems where the QML profiler looked tempting but didn't actually help.