From 337a7e96b62a2c05e9470f93f7f46dce7b75691f Mon Sep 17 00:00:00 2001 From: Anton Kudryavtsev Date: Fri, 8 Jul 2016 13:21:20 +0300 Subject: QStandardItem: use reserve() to optimize memory allocation Change-Id: I09df41f6beaaeecc818f11a01206e9e4583fd93f Reviewed-by: Marc Mutz --- src/gui/itemmodels/qstandarditemmodel.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/gui/itemmodels') diff --git a/src/gui/itemmodels/qstandarditemmodel.cpp b/src/gui/itemmodels/qstandarditemmodel.cpp index 3861eb8b40..7b8d8ae2b7 100644 --- a/src/gui/itemmodels/qstandarditemmodel.cpp +++ b/src/gui/itemmodels/qstandarditemmodel.cpp @@ -1844,7 +1844,9 @@ QList QStandardItem::takeColumn(int column) d->model->d_func()->columnsAboutToBeRemoved(this, column, column); QList items; - for (int row = d->rowCount() - 1; row >= 0; --row) { + const int rowCount = d->rowCount(); + items.reserve(rowCount); + for (int row = rowCount - 1; row >= 0; --row) { int index = d->childIndex(row, column); QStandardItem *ch = d->children.at(index); if (ch) -- cgit v1.2.1 From b75fe73700bae85af4de3e4159a16276b844557b Mon Sep 17 00:00:00 2001 From: Anton Kudryavtsev Date: Fri, 15 Jul 2016 11:41:08 +0300 Subject: QStandardItem: enable NRVO for gcc Change-Id: I5a5ad039e1df8f040b77ff783a4f0e1213a0f286 Reviewed-by: Marc Mutz --- src/gui/itemmodels/qstandarditemmodel.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'src/gui/itemmodels') diff --git a/src/gui/itemmodels/qstandarditemmodel.cpp b/src/gui/itemmodels/qstandarditemmodel.cpp index 7b8d8ae2b7..5c04510af1 100644 --- a/src/gui/itemmodels/qstandarditemmodel.cpp +++ b/src/gui/itemmodels/qstandarditemmodel.cpp @@ -1805,11 +1805,12 @@ QStandardItem *QStandardItem::takeChild(int row, int column) QList QStandardItem::takeRow(int row) { Q_D(QStandardItem); + QList items; if ((row < 0) || (row >= rowCount())) - return QList(); + return items; if (d->model) d->model->d_func()->rowsAboutToBeRemoved(this, row, row); - QList items; + int index = d->childIndex(row, 0); // Will return -1 if there are no columns if (index != -1) { int col_count = d->columnCount(); @@ -1838,11 +1839,11 @@ QList QStandardItem::takeRow(int row) QList QStandardItem::takeColumn(int column) { Q_D(QStandardItem); + QList items; if ((column < 0) || (column >= columnCount())) - return QList(); + return items; if (d->model) d->model->d_func()->columnsAboutToBeRemoved(this, column, column); - QList items; const int rowCount = d->rowCount(); items.reserve(rowCount); -- cgit v1.2.1