diff options
author | Robin Burchell <robin.burchell@viroteck.net> | 2016-12-07 14:41:38 +0100 |
---|---|---|
committer | Robin Burchell <robin.burchell@viroteck.net> | 2016-12-08 12:10:40 +0000 |
commit | 9a3b339e1c3aea4e92149706357e988979593b4d (patch) | |
tree | 1054b7cdce0a7d261605f5570cedb67cb24c6b14 /src/quick/items/qquickspriteengine.cpp | |
parent | ee347ee875f69aff72df294546a0c90ffd79de93 (diff) |
QQuickSpriteEngine: Optimistic speedup for updateSprites
Switch from QList to QVector, and avoid using pop_front -- remove all in one
operation instead.
The idea here was to provide some gain to sprite-sequence in qmlbench, but any
possible gain is pretty miniscule due to the lack of batching that example
suffers. Still, we end up with less CPU time taken, which is a win of sorts.
Change-Id: Ib7c101afa71ee617c3c4506b14701d6a4143ed3a
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
Diffstat (limited to 'src/quick/items/qquickspriteengine.cpp')
-rw-r--r-- | src/quick/items/qquickspriteengine.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/quick/items/qquickspriteengine.cpp b/src/quick/items/qquickspriteengine.cpp index 10e0d51709..b1905f2cc5 100644 --- a/src/quick/items/qquickspriteengine.cpp +++ b/src/quick/items/qquickspriteengine.cpp @@ -664,13 +664,14 @@ uint QQuickStochasticEngine::updateSprites(uint time)//### would returning a lis //Sprite State Update; m_timeOffset = time; m_addAdvance = false; - while (!m_stateUpdates.isEmpty() && time >= m_stateUpdates.constFirst().first){ - const auto copy = m_stateUpdates.constFirst().second; + int i = 0; + for (; i < m_stateUpdates.count() && time >= m_stateUpdates.at(i).first; ++i) { + const auto copy = m_stateUpdates.at(i).second; for (int idx : copy) advance(idx); - m_stateUpdates.pop_front(); } + m_stateUpdates.remove(0, i); m_advanceTime.start(); m_addAdvance = true; if (m_stateUpdates.isEmpty()) @@ -760,13 +761,13 @@ void QQuickStochasticEngine::addToUpdateList(uint t, int idx) m_stateUpdates[i].second << idx; return; } else if (m_stateUpdates.at(i).first > t) { - QList<int> tmpList; + QVector<int> tmpList; tmpList << idx; m_stateUpdates.insert(i, qMakePair(t, tmpList)); return; } } - QList<int> tmpList; + QVector<int> tmpList; tmpList << idx; m_stateUpdates << qMakePair(t, tmpList); } |