QGraphicsAnchorLayout: replace three loops over QHash::keys() with QHash::const_iterator loops

Quite obviously faster (doesn't need to populate a QList first,
just to iterate over it).

Also saves 1.5KiB text on optimized GCC 4.9 Linux AMD64 builds.

Change-Id: If4c7af80165a6027d39359bac22df30e7ca09815
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
This commit is contained in:
Marc Mutz 2015-12-15 20:42:21 +01:00
parent f2d8d9daee
commit 4891fd02c5
2 changed files with 9 additions and 7 deletions

View File

@ -2058,9 +2058,8 @@ QList<AnchorData *> getVariables(const QList<QSimplexConstraint *> &constraints)
QSet<AnchorData *> variableSet;
for (int i = 0; i < constraints.count(); ++i) {
const QSimplexConstraint *c = constraints.at(i);
foreach (QSimplexVariable *var, c->variables.keys()) {
variableSet += static_cast<AnchorData *>(var);
}
for (auto it = c->variables.cbegin(), end = c->variables.cend(); it != end; ++it)
variableSet.insert(static_cast<AnchorData *>(it.key()));
}
return variableSet.toList();
}
@ -2546,7 +2545,8 @@ QGraphicsAnchorLayoutPrivate::getGraphParts(Orientation orientation)
// remaining constraints.
if (match) {
trunkConstraints += c;
trunkVariables += QSet<QSimplexVariable *>::fromList(c->variables.keys());
for (auto jt = c->variables.cbegin(), end = c->variables.cend(); jt != end; ++jt)
trunkVariables.insert(jt.key());
it = remainingConstraints.erase(it);
dirty = true;
} else {

View File

@ -153,9 +153,11 @@ bool QSimplex::setConstraints(const QList<QSimplexConstraint *> &newConstraints)
// "variables" is a list that provides a stable, indexed list of all variables
// used in this problem.
QSet<QSimplexVariable *> variablesSet;
for (int i = 0; i < constraints.size(); ++i)
variablesSet += \
QSet<QSimplexVariable *>::fromList(constraints[i]->variables.keys());
for (int i = 0; i < constraints.size(); ++i) {
const auto &v = constraints.at(i)->variables;
for (auto it = v.cbegin(), end = v.cend(); it != end; ++it)
variablesSet.insert(it.key());
}
variables = variablesSet.toList();
// Set Variables reverse mapping