forked from qt-creator/qt-creator
TreeModel/Find: Save a few cycles when searching
Calls parent() only ~two out of three times and remove some function calls in the TreeModel::parent() implementation, reducing the overall footprint of this bit from ~5 to ~1.5% when searching something in the project tree (test case was Creator-in-Creator, and searching for 'dddddddddd', resulting in 8 complete scans of the tree. Task-number: QTCREATORBUG-17956 Change-Id: I4e46ef0467dd2aea58a7c944e1a2ee5c01e6fbba Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
This commit is contained in:
@@ -919,11 +919,9 @@ QModelIndex BaseTreeModel::parent(const QModelIndex &idx) const
|
||||
if (!grandparent)
|
||||
return QModelIndex();
|
||||
|
||||
for (int i = 0, n = grandparent->childCount(); i < n; ++i)
|
||||
if (grandparent->childAt(i) == parent)
|
||||
return createIndex(i, 0, static_cast<void*>(parent));
|
||||
|
||||
return QModelIndex();
|
||||
// This is on the performance-critical path for ItemViewFind.
|
||||
const int i = grandparent->m_children.indexOf(parent);
|
||||
return createIndex(i, 0, static_cast<void*>(parent));
|
||||
}
|
||||
|
||||
int BaseTreeModel::rowCount(const QModelIndex &idx) const
|
||||
|
||||
Reference in New Issue
Block a user