tiled-0001: mapdocument.cpp sortObjects/sortLayers/moveLayersUp/Down/duplicate QList.contains() inside iteration over all map layers/objects = O(N*S) Fix: QSet O(1) lookup. MEDIUM severity. 24x speedup at N=2000,S=1000. tiled-0002: mapobjectmodel.cpp classChanged QList.contains(tile) inside nested loop over all map objects = O(O*T) Fix: QSet O(1) lookup. MEDIUM severity. 14x speedup at O=2000,T=500. tiled-0003: editpolygontool.cpp updateHandles QList.contains() inside QHash iteration = O(H*S) Fix: QSet O(1) lookup. MEDIUM severity. 13x speedup at H=1000,S=500. 3/3 PASS. MOAD-0002/0003/0004/0005 CLEAN.
16 lines
818 B
Diff
16 lines
818 B
Diff
# UNDF: UNDF-2026-000000950
|
|
--- a/src/tiled/mapobjectmodel.cpp
|
|
+++ b/src/tiled/mapobjectmodel.cpp
|
|
@@ -493,6 +493,7 @@ void MapObjectModel::classChanged(const QList<Object *> &objects)
|
|
} else if (typeId == Object::TileType) {
|
|
+ const QSet<Object *> objectSet(objects.begin(), objects.end());
|
|
for (const Layer *layer : map()->objectGroups()) {
|
|
auto objectGroup = static_cast<const ObjectGroup*>(layer);
|
|
for (MapObject *mapObject : objectGroup->objects()) {
|
|
if (mapObject->className().isEmpty())
|
|
if (auto tile = mapObject->cell().tile())
|
|
- if (objects.contains(tile))
|
|
+ if (objectSet.contains(tile))
|
|
affectedObjects.append(mapObject);
|
|
}
|
|
}
|