aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorAnton Kudryavtsev <a.kudryavtsev@netris.ru>2016-01-15 15:23:25 +0300
committerAnton Kudryavtsev <a.kudryavtsev@netris.ru>2016-01-15 14:11:38 +0000
commit201f84f204dc920023ceb64a2aab624f6ab481c8 (patch)
treead37de58347912a69a3f5bcca067fb61f894ae3f /tools
parent6b4710669a2fbeb2c5a3f703e7597cfd1e80c709 (diff)
Tools: fix expensive iteration over QHash::keys()
Change-Id: I902bafdbc2ddfceeacfc9ef274513a2b0a23aed7 Reviewed-by: Ulf Hermann <ulf.hermann@theqtcompany.com>
Diffstat (limited to 'tools')
-rw-r--r--tools/qmlplugindump/main.cpp8
-rw-r--r--tools/qmlprofiler/qmlprofilerdata.cpp9
2 files changed, 10 insertions, 7 deletions
diff --git a/tools/qmlplugindump/main.cpp b/tools/qmlplugindump/main.cpp
index aa2e8755e6..a696e0b5bc 100644
--- a/tools/qmlplugindump/main.cpp
+++ b/tools/qmlplugindump/main.cpp
@@ -241,10 +241,10 @@ QSet<const QMetaObject *> collectReachableMetaObjects(QQmlEngine *engine,
// For each export of a base object there can be a single extension object overriding it.
// Example: QDeclarativeGraphicsWidget overrides the QtQuick/QGraphicsWidget export
// of QGraphicsWidget.
- foreach (const QByteArray &baseCpp, extensions.keys()) {
- QSet<const QQmlType *> baseExports = qmlTypesByCppName.value(baseCpp);
+ for (auto it = extensions.cbegin(), end = extensions.cend(); it != end; ++it) {
+ QSet<const QQmlType *> baseExports = qmlTypesByCppName.value(it.key());
- const QSet<QByteArray> extensionCppNames = extensions.value(baseCpp);
+ const QSet<QByteArray> extensionCppNames = it.value();
foreach (const QByteArray &extensionCppName, extensionCppNames) {
const QSet<const QQmlType *> extensionExports = qmlTypesByCppName.value(extensionCppName);
@@ -266,7 +266,7 @@ QSet<const QMetaObject *> collectReachableMetaObjects(QQmlEngine *engine,
}
baseExports = newBaseExports;
}
- qmlTypesByCppName[baseCpp] = baseExports;
+ qmlTypesByCppName[it.key()] = baseExports;
}
if (creatable) {
diff --git a/tools/qmlprofiler/qmlprofilerdata.cpp b/tools/qmlprofiler/qmlprofilerdata.cpp
index dd7e5d561b..c702633d7c 100644
--- a/tools/qmlprofiler/qmlprofilerdata.cpp
+++ b/tools/qmlprofiler/qmlprofilerdata.cpp
@@ -520,10 +520,13 @@ bool QmlProfilerData::save(const QString &filename)
stream.writeStartElement(QStringLiteral("eventData"));
stream.writeAttribute(QStringLiteral("totalTime"), QString::number(d->qmlMeasuredTime));
- foreach (const QmlRangeEventData *eventData, d->eventDescriptions.values()) {
+ const auto eventDescriptionsKeys = d->eventDescriptions.keys();
+ for (auto it = d->eventDescriptions.cbegin(), end = d->eventDescriptions.cend();
+ it != end; ++it) {
+ const QmlRangeEventData *eventData = it.value();
stream.writeStartElement(QStringLiteral("event"));
stream.writeAttribute(QStringLiteral("index"), QString::number(
- d->eventDescriptions.keys().indexOf(eventData->eventHashStr)));
+ eventDescriptionsKeys.indexOf(eventData->eventHashStr)));
if (!eventData->displayName.isEmpty())
stream.writeTextElement(QStringLiteral("displayname"), eventData->displayName);
if (eventData->rangeType != QQmlProfilerDefinitions::MaximumRangeType)
@@ -581,7 +584,7 @@ bool QmlProfilerData::save(const QString &filename)
stream.writeAttribute(QStringLiteral("duration"),
QString::number(event.duration));
stream.writeAttribute(QStringLiteral("eventIndex"), QString::number(
- d->eventDescriptions.keys().indexOf(event.data->eventHashStr)));
+ eventDescriptionsKeys.indexOf(event.data->eventHashStr)));
if (event.data->message == QQmlProfilerDefinitions::Event) {
if (event.data->detailType == QQmlProfilerDefinitions::AnimationFrame) {
// special: animation frame