diff options
author | Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> | 2015-02-23 13:45:44 +0100 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> | 2015-02-26 15:13:40 +0000 |
commit | 3b5447661a2c9b4bbced202e116a7edeaaf9a065 (patch) | |
tree | ff7486e826942ac5339135913521bb28cf5ceb37 /src/quick | |
parent | 5163c11952a39458dd6d7ba10391c2b39ccdf86a (diff) |
QtQuick: Micro-optimize iterator loops.
Avoid repeated instantiation of end() in loops, use variable instead.
Change-Id: I6ab1fe2b82406d5ee91710a0333587ffb82c04d4
Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
Diffstat (limited to 'src/quick')
-rw-r--r-- | src/quick/designer/designersupport.cpp | 4 | ||||
-rw-r--r-- | src/quick/items/qquickitemanimation.cpp | 6 | ||||
-rw-r--r-- | src/quick/items/qquickitemview.cpp | 8 | ||||
-rw-r--r-- | src/quick/items/qquickitemviewtransition.cpp | 4 | ||||
-rw-r--r-- | src/quick/items/qquickwindow.cpp | 3 | ||||
-rw-r--r-- | src/quick/scenegraph/qsgdefaultdistancefieldglyphcache.cpp | 8 | ||||
-rw-r--r-- | src/quick/scenegraph/qsgshareddistancefieldglyphcache.cpp | 10 | ||||
-rw-r--r-- | src/quick/scenegraph/util/qsgdepthstencilbuffer.cpp | 2 | ||||
-rw-r--r-- | src/quick/util/qquicksmoothedanimation.cpp | 6 | ||||
-rw-r--r-- | src/quick/util/qquickspringanimation.cpp | 14 | ||||
-rw-r--r-- | src/quick/util/qquicktimeline.cpp | 8 |
11 files changed, 38 insertions, 35 deletions
diff --git a/src/quick/designer/designersupport.cpp b/src/quick/designer/designersupport.cpp index fe61340859..56d2badb62 100644 --- a/src/quick/designer/designersupport.cpp +++ b/src/quick/designer/designersupport.cpp @@ -57,9 +57,9 @@ DesignerSupport::DesignerSupport() DesignerSupport::~DesignerSupport() { - QHash<QQuickItem*, QSGLayer*>::iterator iterator; + typedef QHash<QQuickItem*, QSGLayer*>::iterator ItemTextureHashIt; - for (iterator = m_itemTextureHash.begin(); iterator != m_itemTextureHash.end(); ++iterator) { + for (ItemTextureHashIt iterator = m_itemTextureHash.begin(), end = m_itemTextureHash.end(); iterator != end; ++iterator) { QSGLayer *texture = iterator.value(); QQuickItem *item = iterator.key(); QQuickItemPrivate::get(item)->derefFromEffectItem(true); diff --git a/src/quick/items/qquickitemanimation.cpp b/src/quick/items/qquickitemanimation.cpp index dadef6a0c3..9d140b3156 100644 --- a/src/quick/items/qquickitemanimation.cpp +++ b/src/quick/items/qquickitemanimation.cpp @@ -581,11 +581,11 @@ QQuickPathAnimation::QQuickPathAnimation(QObject *parent) QQuickPathAnimation::~QQuickPathAnimation() { + typedef QHash<QQuickItem*, QQuickPathAnimationAnimator* >::iterator ActiveAnimationsIt; + Q_D(QQuickPathAnimation); - QHash<QQuickItem*, QQuickPathAnimationAnimator* >::iterator it; - for (it = d->activeAnimations.begin(); it != d->activeAnimations.end(); ++it) { + for (ActiveAnimationsIt it = d->activeAnimations.begin(), end = d->activeAnimations.end(); it != end; ++it) it.value()->clearTemplate(); - } } /*! diff --git a/src/quick/items/qquickitemview.cpp b/src/quick/items/qquickitemview.cpp index 0cab9d28dd..01ef1e65f7 100644 --- a/src/quick/items/qquickitemview.cpp +++ b/src/quick/items/qquickitemview.cpp @@ -2415,20 +2415,22 @@ void QQuickItemViewPrivate::updateTrackedItem() void QQuickItemViewPrivate::updateUnrequestedIndexes() { Q_Q(QQuickItemView); - for (QHash<QQuickItem*,int>::iterator it = unrequestedItems.begin(); it != unrequestedItems.end(); ++it) + for (QHash<QQuickItem*,int>::iterator it = unrequestedItems.begin(), end = unrequestedItems.end(); it != end; ++it) *it = model->indexOf(it.key(), q); } void QQuickItemViewPrivate::updateUnrequestedPositions() { - for (QHash<QQuickItem*,int>::const_iterator it = unrequestedItems.begin(); it != unrequestedItems.end(); ++it) + for (QHash<QQuickItem*,int>::const_iterator it = unrequestedItems.begin(), cend = unrequestedItems.end(); it != cend; ++it) repositionPackageItemAt(it.key(), it.value()); } void QQuickItemViewPrivate::updateVisibleIndex() { + typedef QList<FxViewItem*>::const_iterator FxViewItemListConstIt; + visibleIndex = 0; - for (QList<FxViewItem*>::Iterator it = visibleItems.begin(); it != visibleItems.end(); ++it) { + for (FxViewItemListConstIt it = visibleItems.constBegin(), cend = visibleItems.constEnd(); it != cend; ++it) { if ((*it)->index != -1) { visibleIndex = (*it)->index; break; diff --git a/src/quick/items/qquickitemviewtransition.cpp b/src/quick/items/qquickitemviewtransition.cpp index ae719198f1..7fa6cdc161 100644 --- a/src/quick/items/qquickitemviewtransition.cpp +++ b/src/quick/items/qquickitemviewtransition.cpp @@ -162,7 +162,9 @@ QQuickItemViewTransitioner::QQuickItemViewTransitioner() QQuickItemViewTransitioner::~QQuickItemViewTransitioner() { - for (QSet<QQuickItemViewTransitionJob *>::iterator it = runningJobs.begin(); it != runningJobs.end(); ++it) + typedef QSet<QQuickItemViewTransitionJob *>::iterator JobIt; + + for (JobIt it = runningJobs.begin(), end = runningJobs.end(); it != end; ++it) (*it)->m_transitioner = 0; } diff --git a/src/quick/items/qquickwindow.cpp b/src/quick/items/qquickwindow.cpp index b88a3aecbc..d2b5786125 100644 --- a/src/quick/items/qquickwindow.cpp +++ b/src/quick/items/qquickwindow.cpp @@ -2675,8 +2675,7 @@ void QQuickWindowPrivate::cleanupNodesOnShutdown() Q_Q(QQuickWindow); cleanupNodes(); cleanupNodesOnShutdown(contentItem); - QSet<QQuickItem *>::const_iterator it = parentlessItems.begin(); - for (; it != parentlessItems.end(); ++it) + for (QSet<QQuickItem *>::const_iterator it = parentlessItems.begin(), cend = parentlessItems.end(); it != cend; ++it) cleanupNodesOnShutdown(*it); animationController->windowNodesDestroyed(); q->cleanupSceneGraph(); diff --git a/src/quick/scenegraph/qsgdefaultdistancefieldglyphcache.cpp b/src/quick/scenegraph/qsgdefaultdistancefieldglyphcache.cpp index 16745c18d5..b705ef48af 100644 --- a/src/quick/scenegraph/qsgdefaultdistancefieldglyphcache.cpp +++ b/src/quick/scenegraph/qsgdefaultdistancefieldglyphcache.cpp @@ -146,7 +146,10 @@ void QSGDefaultDistanceFieldGlyphCache::requestGlyphs(const QSet<glyph_t> &glyph void QSGDefaultDistanceFieldGlyphCache::storeGlyphs(const QList<QDistanceField> &glyphs) { - QHash<TextureInfo *, QVector<glyph_t> > glyphTextures; + typedef QHash<TextureInfo *, QVector<glyph_t> > GlyphTextureHash; + typedef GlyphTextureHash::const_iterator GlyphTextureHashConstIt; + + GlyphTextureHash glyphTextures; GLint alignment = 4; // default value m_funcs->glGetIntegerv(GL_UNPACK_ALIGNMENT, &alignment); @@ -203,8 +206,7 @@ void QSGDefaultDistanceFieldGlyphCache::storeGlyphs(const QList<QDistanceField> // restore to previous alignment m_funcs->glPixelStorei(GL_UNPACK_ALIGNMENT, alignment); - QHash<TextureInfo *, QVector<glyph_t> >::const_iterator i; - for (i = glyphTextures.constBegin(); i != glyphTextures.constEnd(); ++i) { + for (GlyphTextureHashConstIt i = glyphTextures.constBegin(), cend = glyphTextures.constEnd(); i != cend; ++i) { Texture t; t.textureId = i.key()->texture; t.size = i.key()->size; diff --git a/src/quick/scenegraph/qsgshareddistancefieldglyphcache.cpp b/src/quick/scenegraph/qsgshareddistancefieldglyphcache.cpp index e921e63fcb..f1cc9d1a86 100644 --- a/src/quick/scenegraph/qsgshareddistancefieldglyphcache.cpp +++ b/src/quick/scenegraph/qsgshareddistancefieldglyphcache.cpp @@ -251,6 +251,8 @@ QSGSharedDistanceFieldGlyphCache::~QSGSharedDistanceFieldGlyphCache() void QSGSharedDistanceFieldGlyphCache::requestGlyphs(const QSet<glyph_t> &glyphs) { + typedef QSet<glyph_t>::const_iterator GlyphSetConstIt; + QMutexLocker locker(&m_pendingGlyphsMutex); #if defined(QSGSHAREDDISTANCEFIELDGLYPHCACHE_DEBUG) @@ -264,8 +266,7 @@ void QSGSharedDistanceFieldGlyphCache::requestGlyphs(const QSet<glyph_t> &glyphs QVector<quint32> glyphsVector; glyphsVector.reserve(glyphs.size()); - QSet<glyph_t>::const_iterator it; - for (it = glyphs.constBegin(); it != glyphs.constEnd(); ++it) { + for (GlyphSetConstIt it = glyphs.constBegin(), cend = glyphs.constEnd(); it != cend; ++it) { Q_ASSERT(!m_bufferForGlyph.contains(*it)); glyphsVector.append(*it); } @@ -335,6 +336,8 @@ void QSGSharedDistanceFieldGlyphCache::referenceGlyphs(const QSet<glyph_t> &glyp void QSGSharedDistanceFieldGlyphCache::releaseGlyphs(const QSet<glyph_t> &glyphs) { + typedef QSet<glyph_t>::const_iterator GlyphSetConstIt; + #if defined(QSGSHAREDDISTANCEFIELDGLYPHCACHE_DEBUG) qDebug("QSGSharedDistanceFieldGlyphCache::releaseGlyphs() called for %s (%d glyphs)", m_cacheId.constData(), glyphs.size()); @@ -345,8 +348,7 @@ void QSGSharedDistanceFieldGlyphCache::releaseGlyphs(const QSet<glyph_t> &glyphs QVector<quint32> glyphsVector; glyphsVector.reserve(glyphs.size()); - QSet<glyph_t>::const_iterator glyphsIt; - for (glyphsIt = glyphs.constBegin(); glyphsIt != glyphs.constEnd(); ++glyphsIt) { + for (GlyphSetConstIt glyphsIt = glyphs.constBegin(), cend = glyphs.constEnd(); glyphsIt != cend; ++glyphsIt) { QHash<glyph_t, void *>::iterator bufferIt = m_bufferForGlyph.find(*glyphsIt); if (bufferIt != m_bufferForGlyph.end()) { void *buffer = bufferIt.value(); diff --git a/src/quick/scenegraph/util/qsgdepthstencilbuffer.cpp b/src/quick/scenegraph/util/qsgdepthstencilbuffer.cpp index 22d52878ae..5d2260923b 100644 --- a/src/quick/scenegraph/util/qsgdepthstencilbuffer.cpp +++ b/src/quick/scenegraph/util/qsgdepthstencilbuffer.cpp @@ -151,7 +151,7 @@ void QSGDefaultDepthStencilBuffer::free() QSGDepthStencilBufferManager::~QSGDepthStencilBufferManager() { - for (Hash::const_iterator it = m_buffers.constBegin(); it != m_buffers.constEnd(); ++it) { + for (Hash::const_iterator it = m_buffers.constBegin(), cend = m_buffers.constEnd(); it != cend; ++it) { QSGDepthStencilBuffer *buffer = it.value().data(); buffer->free(); buffer->m_manager = 0; diff --git a/src/quick/util/qquicksmoothedanimation.cpp b/src/quick/util/qquicksmoothedanimation.cpp index 55011f5a46..71dacfcb1d 100644 --- a/src/quick/util/qquicksmoothedanimation.cpp +++ b/src/quick/util/qquicksmoothedanimation.cpp @@ -378,11 +378,11 @@ QQuickSmoothedAnimationPrivate::QQuickSmoothedAnimationPrivate() QQuickSmoothedAnimationPrivate::~QQuickSmoothedAnimationPrivate() { + typedef QHash<QQmlProperty, QSmoothedAnimation* >::iterator ActiveAnimationsHashIt; + delete anim; - QHash<QQmlProperty, QSmoothedAnimation* >::iterator it; - for (it = activeAnimations.begin(); it != activeAnimations.end(); ++it) { + for (ActiveAnimationsHashIt it = activeAnimations.begin(), end = activeAnimations.end(); it != end; ++it) it.value()->clearTemplate(); - } } void QQuickSmoothedAnimationPrivate::updateRunningAnimations() diff --git a/src/quick/util/qquickspringanimation.cpp b/src/quick/util/qquickspringanimation.cpp index f2eee6a802..b68afbecdd 100644 --- a/src/quick/util/qquickspringanimation.cpp +++ b/src/quick/util/qquickspringanimation.cpp @@ -86,6 +86,7 @@ public: bool haveModulus : 1; bool skipUpdate : 1; typedef QHash<QQmlProperty, QSpringAnimation*> ActiveAnimationHash; + typedef ActiveAnimationHash::Iterator ActiveAnimationHashIt; void clearTemplate() { animationTemplate = 0; } @@ -161,14 +162,12 @@ QSpringAnimation::~QSpringAnimation() { if (animationTemplate) { if (target.object()) { - QSpringAnimation::ActiveAnimationHash::iterator it = - animationTemplate->activeAnimations.find(target); + ActiveAnimationHashIt it = animationTemplate->activeAnimations.find(target); if (it != animationTemplate->activeAnimations.end() && it.value() == this) animationTemplate->activeAnimations.erase(it); } else { //target is no longer valid, need to search linearly - QSpringAnimation::ActiveAnimationHash::iterator it; - for (it = animationTemplate->activeAnimations.begin(); it != animationTemplate->activeAnimations.end(); ++it) { + for (ActiveAnimationHashIt it = animationTemplate->activeAnimations.begin(); it != animationTemplate->activeAnimations.end(); ++it) { if (it.value() == this) { animationTemplate->activeAnimations.erase(it); break; @@ -329,8 +328,7 @@ void QQuickSpringAnimationPrivate::updateMode() mode = QSpringAnimation::Spring; else { mode = QSpringAnimation::Velocity; - QSpringAnimation::ActiveAnimationHash::iterator it; - for (it = activeAnimations.begin(); it != activeAnimations.end(); ++it) { + for (QSpringAnimation::ActiveAnimationHashIt it = activeAnimations.begin(), end = activeAnimations.end(); it != end; ++it) { QSpringAnimation *animation = *it; animation->startTime = animation->lastTime; qreal dist = qAbs(animation->currentValue - animation->to); @@ -378,10 +376,8 @@ QQuickSpringAnimation::QQuickSpringAnimation(QObject *parent) QQuickSpringAnimation::~QQuickSpringAnimation() { Q_D(QQuickSpringAnimation); - QSpringAnimation::ActiveAnimationHash::iterator it; - for (it = d->activeAnimations.begin(); it != d->activeAnimations.end(); ++it) { + for (QSpringAnimation::ActiveAnimationHashIt it = d->activeAnimations.begin(), end = d->activeAnimations.end(); it != end; ++it) it.value()->clearTemplate(); - } } /*! diff --git a/src/quick/util/qquicktimeline.cpp b/src/quick/util/qquicktimeline.cpp index 04b66800d2..8cd9b349d8 100644 --- a/src/quick/util/qquicktimeline.cpp +++ b/src/quick/util/qquicktimeline.cpp @@ -659,7 +659,7 @@ void QQuickTimeLine::complete() */ void QQuickTimeLine::clear() { - for (QQuickTimeLinePrivate::Ops::ConstIterator iter = d->ops.begin(); iter != d->ops.end(); ++iter) + for (QQuickTimeLinePrivate::Ops::const_iterator iter = d->ops.begin(), cend = d->ops.end(); iter != cend; ++iter) iter.key()->_t = 0; d->ops.clear(); d->length = 0; @@ -735,9 +735,9 @@ int QQuickTimeLinePrivate::advance(int t) pauseTime = -1; // Minimal advance time int advanceTime = t; - for (Ops::Iterator iter = ops.begin(); iter != ops.end(); ++iter) { - TimeLine &tl = *iter; - Op &op = tl.ops.first(); + for (Ops::const_iterator iter = ops.constBegin(), cend = ops.constEnd(); iter != cend; ++iter) { + const TimeLine &tl = *iter; + const Op &op = tl.ops.first(); int length = op.length - tl.consumedOpLength; if (length < advanceTime) { |