summaryrefslogtreecommitdiffstats
path: root/src/widgets/graphicsview/qgraphicsscene.cpp
diff options
context:
space:
mode:
authorRobin Burchell <robin+qt@viroteck.net>2012-09-02 12:18:14 +0200
committerQt by Nokia <qt-info@nokia.com>2012-09-04 02:03:23 +0200
commit8486a510d5fb6c9ecd03dba0a49fd4f6d55c3bca (patch)
tree0ed79a01e9fd1f1af1a7d7a11758e1ee98f208d4 /src/widgets/graphicsview/qgraphicsscene.cpp
parentce2a8bdc13891cf1f53863bd5cd22d1a8fd6aae1 (diff)
graphicsview: use std::sort instead of qSort
In almost all cases, std::sort is wildly faster than qSort - but especially in the case where the input data is already sorted. in some stress tests which ran through the index with a lot of items, this commit provides huge speedup (684ms down to 10ms for painting 15001 empty items on the provided benchmark), for me. Task-number: QTBUG-11022 Change-Id: I5551f8e320c33ba13d464bf22047a665c81f3b74 Reviewed-by: Peter Kümmel <syntheticpp@gmx.net> Reviewed-by: João Abecasis <joao.abecasis@nokia.com>
Diffstat (limited to 'src/widgets/graphicsview/qgraphicsscene.cpp')
-rw-r--r--src/widgets/graphicsview/qgraphicsscene.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/widgets/graphicsview/qgraphicsscene.cpp b/src/widgets/graphicsview/qgraphicsscene.cpp
index 6fe619ec02..313e713946 100644
--- a/src/widgets/graphicsview/qgraphicsscene.cpp
+++ b/src/widgets/graphicsview/qgraphicsscene.cpp
@@ -1465,7 +1465,7 @@ void QGraphicsScenePrivate::mousePressEventHandler(QGraphicsSceneMouseEvent *mou
void QGraphicsScenePrivate::ensureSequentialTopLevelSiblingIndexes()
{
if (!topLevelSequentialOrdering) {
- qSort(topLevelItems.begin(), topLevelItems.end(), QGraphicsItemPrivate::insertionOrder);
+ std::sort(topLevelItems.begin(), topLevelItems.end(), QGraphicsItemPrivate::insertionOrder);
topLevelSequentialOrdering = true;
needSortTopLevelItems = 1;
}
@@ -6055,7 +6055,7 @@ void QGraphicsScenePrivate::gestureEventHandler(QGestureEvent *event)
gestureTargetsAtHotSpots(startedGestures, Qt::GestureFlag(0), &cachedItemGestures, 0,
&normalGestures, &conflictedGestures);
cachedTargetItems = cachedItemGestures.keys();
- qSort(cachedTargetItems.begin(), cachedTargetItems.end(), qt_closestItemFirst);
+ std::sort(cachedTargetItems.begin(), cachedTargetItems.end(), qt_closestItemFirst);
DEBUG() << "QGraphicsScenePrivate::gestureEventHandler:"
<< "Normal gestures:" << normalGestures
<< "Conflicting gestures:" << conflictedGestures;
@@ -6148,7 +6148,7 @@ void QGraphicsScenePrivate::gestureEventHandler(QGestureEvent *event)
<< gesture->hotSpot() << gesture->d_func()->sceneHotSpot;
}
}
- qSort(cachedTargetItems.begin(), cachedTargetItems.end(), qt_closestItemFirst);
+ std::sort(cachedTargetItems.begin(), cachedTargetItems.end(), qt_closestItemFirst);
for (int i = 0; i < cachedTargetItems.size(); ++i) {
QPointer<QGraphicsObject> receiver = cachedTargetItems.at(i);
QSet<QGesture *> gestures =
@@ -6228,7 +6228,7 @@ void QGraphicsScenePrivate::gestureEventHandler(QGestureEvent *event)
&cachedItemGestures, &targetsSet, 0, 0);
cachedTargetItems = targetsSet.toList();
- qSort(cachedTargetItems.begin(), cachedTargetItems.end(), qt_closestItemFirst);
+ std::sort(cachedTargetItems.begin(), cachedTargetItems.end(), qt_closestItemFirst);
DEBUG() << "QGraphicsScenePrivate::gestureEventHandler:"
<< "new targets:" << cachedTargetItems;
i = -1; // start delivery again