aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qmlprofiler
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@digia.com>2014-03-26 15:17:44 +0100
committerUlf Hermann <ulf.hermann@digia.com>2014-03-31 10:54:55 +0200
commitcdec724ea599dd445452778dff79224637cc8321 (patch)
treed8b39f608e18a1fb5fdae9d752be9edeb9fbc270 /src/plugins/qmlprofiler
parent13c8478d8252385ef5097f5742705f6327ed3af0 (diff)
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>
Diffstat (limited to 'src/plugins/qmlprofiler')
-rw-r--r--src/plugins/qmlprofiler/qmlprofilertracefile.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/plugins/qmlprofiler/qmlprofilertracefile.cpp b/src/plugins/qmlprofiler/qmlprofilertracefile.cpp
index 3b8217d2b50..f058708ffb9 100644
--- a/src/plugins/qmlprofiler/qmlprofilertracefile.cpp
+++ b/src/plugins/qmlprofiler/qmlprofilertracefile.cpp
@@ -439,12 +439,17 @@ void QmlProfilerFileWriter::save(QIODevice *device)
stream.writeStartElement(_("eventData"));
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();
for (; eventIter != m_qmlEvents.constEnd(); ++eventIter) {
QmlEvent event = eventIter.value();
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(_("type"), qmlEventTypeAsString(event.type));
if (!event.filename.isEmpty()) {
@@ -476,7 +481,7 @@ void QmlProfilerFileWriter::save(QIODevice *device)
stream.writeAttribute(_("startTime"), QString::number(range.startTime));
if (range.duration > 0) // no need to store duration of instantaneous events
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);