forked from qt-creator/qt-creator
QmlProfiler: Don't rebuild the same key list over and over when saving
Saving a trace is so much faster like this. Task-number: QTCREATORBUG-11823 Change-Id: I5c68a16739d8bc49bfc0e3bb923ab23058aab6d0 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
This commit is contained in:
@@ -439,12 +439,17 @@ void QmlProfilerFileWriter::save(QIODevice *device)
|
|||||||
stream.writeStartElement(_("eventData"));
|
stream.writeStartElement(_("eventData"));
|
||||||
stream.writeAttribute(_("totalTime"), QString::number(m_measuredTime));
|
stream.writeAttribute(_("totalTime"), QString::number(m_measuredTime));
|
||||||
|
|
||||||
|
QMap<QString, QString> keys;
|
||||||
|
int i = 0;
|
||||||
|
foreach (const QString &key, m_qmlEvents.keys())
|
||||||
|
keys[key] = QString::number(i++);
|
||||||
|
|
||||||
QHash<QString,QmlEvent>::const_iterator eventIter = m_qmlEvents.constBegin();
|
QHash<QString,QmlEvent>::const_iterator eventIter = m_qmlEvents.constBegin();
|
||||||
for (; eventIter != m_qmlEvents.constEnd(); ++eventIter) {
|
for (; eventIter != m_qmlEvents.constEnd(); ++eventIter) {
|
||||||
QmlEvent event = eventIter.value();
|
QmlEvent event = eventIter.value();
|
||||||
|
|
||||||
stream.writeStartElement(_("event"));
|
stream.writeStartElement(_("event"));
|
||||||
stream.writeAttribute(_("index"), QString::number(m_qmlEvents.keys().indexOf(eventIter.key())));
|
stream.writeAttribute(_("index"), keys[eventIter.key()]);
|
||||||
stream.writeTextElement(_("displayname"), event.displayName);
|
stream.writeTextElement(_("displayname"), event.displayName);
|
||||||
stream.writeTextElement(_("type"), qmlEventTypeAsString(event.type));
|
stream.writeTextElement(_("type"), qmlEventTypeAsString(event.type));
|
||||||
if (!event.filename.isEmpty()) {
|
if (!event.filename.isEmpty()) {
|
||||||
@@ -476,7 +481,7 @@ void QmlProfilerFileWriter::save(QIODevice *device)
|
|||||||
stream.writeAttribute(_("startTime"), QString::number(range.startTime));
|
stream.writeAttribute(_("startTime"), QString::number(range.startTime));
|
||||||
if (range.duration > 0) // no need to store duration of instantaneous events
|
if (range.duration > 0) // no need to store duration of instantaneous events
|
||||||
stream.writeAttribute(_("duration"), QString::number(range.duration));
|
stream.writeAttribute(_("duration"), QString::number(range.duration));
|
||||||
stream.writeAttribute(_("eventIndex"), QString::number(m_qmlEvents.keys().indexOf(eventHash)));
|
stream.writeAttribute(_("eventIndex"), keys[eventHash]);
|
||||||
|
|
||||||
QmlEvent event = m_qmlEvents.value(eventHash);
|
QmlEvent event = m_qmlEvents.value(eventHash);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user