forked from qt-creator/qt-creator
We called that "Target" before Change-Id: Ie0d673c643947c26ac2706907f6250fc1739388a Reviewed-by: Leena Miettinen <riitta-leena.miettinen@nokia.com>
218 lines
8.3 KiB
Plaintext
218 lines
8.3 KiB
Plaintext
/****************************************************************************
|
|
**
|
|
** This file is part of Qt Creator
|
|
**
|
|
** Copyright (c) 2012 Nokia Corporation and/or its subsidiary(-ies).
|
|
**
|
|
** Contact: http://www.qt-project.org/
|
|
**
|
|
**
|
|
** GNU Free Documentation License
|
|
**
|
|
** Alternatively, this file may be used under the terms of the GNU Free
|
|
** Documentation License version 1.3 as published by the Free Software
|
|
** Foundation and appearing in the file included in the packaging of this
|
|
** file.
|
|
**
|
|
**
|
|
****************************************************************************/
|
|
|
|
// **********************************************************************
|
|
// NOTE: the sections are not ordered by their logical order to avoid
|
|
// reshuffling the file each time the index order changes (i.e., often).
|
|
// Run the fixnavi.pl script to adjust the links to the index order.
|
|
// **********************************************************************
|
|
|
|
/*!
|
|
\contentspage index.html
|
|
\previouspage creator-analyze-mode.html
|
|
\page creator-qml-performance-monitor.html
|
|
\nextpage creator-valgrind-overview.html
|
|
|
|
\title Profiling QML Applications
|
|
|
|
To monitor the performance of an application in the QML Profiler:
|
|
|
|
\list 1
|
|
|
|
\o To be able to profile an application, you must set up QML debugging
|
|
for the project. For more information, see
|
|
\l{Setting Up QML Debugging}.
|
|
|
|
\o In the \gui Projects mode, select Qt 4.7.4 in the \gui {Qt version}
|
|
field.
|
|
|
|
\note To profile applications on devices, you must install Qt 4.7.4
|
|
or later libraries on them.
|
|
|
|
\o Select \gui {Analyze > QML Profiler} to profile the current
|
|
application.
|
|
|
|
\o Select the
|
|
\inlineimage qtcreator-analyze-start-button.png
|
|
(\gui Start) button to start the application from the
|
|
QML Profiler.
|
|
|
|
\note If data collection does not start automatically, select the
|
|
\inlineimage qtcreator-analyzer-button.png
|
|
(\gui {Enable Profiling}) button.
|
|
|
|
\endlist
|
|
|
|
When you start analyzing an application, the application is launched, and
|
|
the QML Profiler immediately begins to collect data. This is indicated by
|
|
the time running in the \gui Elapsed field.
|
|
|
|
Data is collected until you select the
|
|
\inlineimage qtcreator-debug-button-stop.png
|
|
(\gui Stop) button. Data collection
|
|
takes time, and therefore, there might be a delay
|
|
before the data is displayed.
|
|
|
|
Do not use application commands to exit the application, because data is
|
|
sent to the QML Profiler when you select the \gui Stop button.
|
|
The application continues to run for some seconds, after which it is stopped
|
|
automatically. If you exit the application, the data is not sent.
|
|
|
|
Select the \gui {Disable Profiling} button to disable the automatic
|
|
start of the data collection when an
|
|
application is launched. Data collection starts when you select the button
|
|
again.
|
|
|
|
To save all the collected data, right-click any QML Profiler view to open
|
|
the context menu, and then select \gui {Save QML Trace}. To view the saved
|
|
data, select \gui {Load QML Trace}. You can also deliver the saved data to
|
|
other developers for examination or load data saved by them.
|
|
|
|
\section1 Attaching to Running Qt Quick Applications
|
|
|
|
To profile Qt Quick applications that are not launched by \QC, select
|
|
\gui {Analyze > QML Profiler (External)}. You must enable QML debugging for
|
|
the application in the project build settings. For more information, see
|
|
\l{Setting Up QML Debugging}.
|
|
|
|
In the \gui {QML Profiler} dialog, \gui Port field, specify the port to
|
|
listen to.
|
|
|
|
\section1 Analyzing Collected Data
|
|
|
|
The \gui Timeline view displays graphical representations of:
|
|
|
|
\list
|
|
|
|
\o Painting operations
|
|
|
|
\o Compiling the QML sources
|
|
|
|
\o Creating elements
|
|
|
|
\o Binding evaluations
|
|
|
|
\o Signal handling
|
|
|
|
\o Summary of the recorded period
|
|
|
|
\endlist
|
|
|
|
\image qtcreator-qml-performance-monitor.png "QML Profiler"
|
|
|
|
Each row in the timeline (6) describes a type of QML events that were
|
|
recorded. Move the cursor on an event on a row to see how long it takes and
|
|
where in the source it is being called. To display the information only when
|
|
an event is selected, disable the \gui {View Event Information on Mouseover}
|
|
button (5).
|
|
|
|
The outline (10) summarizes the period for which data was collected. Drag
|
|
the zoom range (8) or click the outline to move on the outline. You can
|
|
also move between events by selecting the \gui {Jump to Previous Event} (1)
|
|
and \gui {Jump to Next Event} (2) buttons.
|
|
|
|
Select the \gui {Show Zoom Slider} button (3) to open a slider that you can
|
|
use to set the zoom level. You can also drag the zoom handles (9). To reset
|
|
the default zoom level, right-click the timeline to open the context menu,
|
|
and select \gui {Reset Zoom}.
|
|
|
|
\section2 Selecting Event Ranges
|
|
|
|
You can select an event range (7) to view the frame rate of events and to
|
|
compare it with the frame rate of similar events. Select the
|
|
\gui {Select Range} button (4) to activate the selection tool. Then click in
|
|
the timeline to specify the beginning of the event range. Drag the selection
|
|
handle to define the end of the range. The length of the range indicates the
|
|
frame rate of the event.
|
|
|
|
You can use event ranges also to measure delays between two subsequent
|
|
events. Place a range between the end of the first event and the beginning
|
|
of the second event. The \gui Duration field displays the delay between the
|
|
events in milliseconds.
|
|
|
|
To zoom into an event range, double-click it.
|
|
|
|
To remove an event range, close the \gui Selection dialog.
|
|
|
|
\section2 Evaluating Bindings
|
|
|
|
On the \gui Binding row, you can see when a binding is evaluated and how
|
|
long the evaluation takes. Move the mouse over the binding for details
|
|
about the binding: location in the source code, duration, and source
|
|
code.
|
|
|
|
Click the binding to move the cursor in the code editor to the part of the
|
|
code where the binding is called.
|
|
|
|
\section1 Viewing Events
|
|
|
|
The \gui Events view displays the number of times each binding is called
|
|
and the time the calls take. This allows you to examine which events you
|
|
need to optimize. A high number of calls might indicate that a binding is
|
|
called unnecessarily. Click on a binding to move to it in the source code
|
|
in the code editor.
|
|
|
|
\image qtcreator-analyzer-bindings.png "Events view"
|
|
|
|
The \gui Callers and \gui Callees panes show dependencies between events.
|
|
They allow you to examine the internal functions of the application.
|
|
The \gui Callers pane summarizes the QML events that trigger a binding.
|
|
This tells you what caused a change in a binding.
|
|
The \gui Callees pane summarizes the QML events that a binding triggers.
|
|
This tells you which QML events are affected if you change a binding.
|
|
|
|
Click on a binding to move to it in the source code in the code editor.
|
|
|
|
When you select an event in the \gui Timeline view, information about it is
|
|
displayed in the \gui Events view. To view an event range in the \gui Events
|
|
view, select \gui {Limit Events Pane to Current Range} in the context menu
|
|
in the \gui Timeline view.
|
|
|
|
To copy the contents of one view or row to the clipboard, select
|
|
\gui {Copy Table} or \gui {Copy Row} in the context menu.
|
|
|
|
You can view similar information about JavaScript events in the
|
|
\gui JavaScript view.
|
|
|
|
\image qml-profiler-javascript.png "JavaScript view"
|
|
|
|
\section2 Viewing More Data
|
|
|
|
The QML JavaScript engine optimizes trivial bindings. The QML Profiler
|
|
does not receive information about optimized bindings, and
|
|
therefore, it displays the text \gui {<bytecode>} and the message
|
|
\gui {Source code not available} in the \gui Callers and \gui {Callees}
|
|
panes.
|
|
|
|
To inspect the optimized bindings, turn off the QML optimizer by setting the
|
|
environment variable QML_DISABLE_OPTIMIZER to 1. To set the environment
|
|
variable for the current project in the project settings:
|
|
|
|
\list 1
|
|
|
|
\o Select \gui {Projects > Run}.
|
|
|
|
\o In \gui {Run Environment}, click \gui Add.
|
|
|
|
\o Add the QML_DISABLE_OPTIMIZER variable and set its value to 1.
|
|
|
|
\endlist
|
|
|
|
*/
|