diff options
author | Ulf Hermann <ulf.hermann@digia.com> | 2014-03-26 15:17:44 +0100 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@digia.com> | 2014-03-31 10:54:55 +0200 |
commit | cdec724ea599dd445452778dff79224637cc8321 (patch) | |
tree | d8b39f608e18a1fb5fdae9d752be9edeb9fbc270 /src/plugins/qmlprofiler | |
parent | 13c8478d8252385ef5097f5742705f6327ed3af0 (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.cpp | 9 |
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); |