From fece7cdb5daed826ab074b3210327dcfd7ab0e90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Martins?= Date: Mon, 22 Jun 2015 22:12:27 +0100 Subject: widgets: Use QList::reserve(), reduces reallocations. Change-Id: I49cc03f365c77f142f62c8e77505ec09723a44d9 Reviewed-by: Marc Mutz --- src/widgets/accessible/itemviews.cpp | 16 +++++++--- src/widgets/dialogs/qfiledialog.cpp | 36 ++++++++++++++++------ src/widgets/dialogs/qfilesystemmodel.cpp | 18 +++++++---- src/widgets/dialogs/qfontdialog.cpp | 1 + src/widgets/dialogs/qinputdialog.cpp | 1 + src/widgets/dialogs/qsidebar.cpp | 16 +++++++--- .../graphicsview/qgraphicsanchorlayout_p.cpp | 5 ++- .../graphicsview/qgraphicsitemanimation.cpp | 20 +++++++++--- src/widgets/graphicsview/qgraphicssceneindex.cpp | 4 ++- src/widgets/itemviews/qlistwidget.cpp | 4 ++- src/widgets/itemviews/qtableview.cpp | 4 +++ src/widgets/itemviews/qtablewidget.cpp | 8 +++-- src/widgets/widgets/qabstractscrollarea.cpp | 2 ++ src/widgets/widgets/qcombobox.cpp | 1 + src/widgets/widgets/qdockarealayout.cpp | 4 ++- src/widgets/widgets/qsplitter.cpp | 9 ++++-- src/widgets/widgets/qwidgettextcontrol.cpp | 9 ++++-- 17 files changed, 117 insertions(+), 41 deletions(-) (limited to 'src/widgets') diff --git a/src/widgets/accessible/itemviews.cpp b/src/widgets/accessible/itemviews.cpp index c7625c2827..ca2fd62994 100644 --- a/src/widgets/accessible/itemviews.cpp +++ b/src/widgets/accessible/itemviews.cpp @@ -198,7 +198,9 @@ QList QAccessibleTable::selectedCells() const QList cells; if (!view()->selectionModel()) return cells; - Q_FOREACH (const QModelIndex &index, view()->selectionModel()->selectedIndexes()) + const QModelIndexList selectedIndexes = view()->selectionModel()->selectedIndexes(); + cells.reserve(selectedIndexes.size()); + Q_FOREACH (const QModelIndex &index, selectedIndexes) cells.append(child(logicalIndex(index))); return cells; } @@ -208,9 +210,11 @@ QList QAccessibleTable::selectedColumns() const if (!view()->selectionModel()) return QList(); QList columns; - Q_FOREACH (const QModelIndex &index, view()->selectionModel()->selectedColumns()) { + const QModelIndexList selectedColumns = view()->selectionModel()->selectedColumns(); + columns.reserve(selectedColumns.size()); + Q_FOREACH (const QModelIndex &index, selectedColumns) columns.append(index.column()); - } + return columns; } @@ -219,9 +223,11 @@ QList QAccessibleTable::selectedRows() const if (!view()->selectionModel()) return QList(); QList rows; - Q_FOREACH (const QModelIndex &index, view()->selectionModel()->selectedRows()) { + const QModelIndexList selectedRows = view()->selectionModel()->selectedRows(); + rows.reserve(selectedRows.size()); + Q_FOREACH (const QModelIndex &index, selectedRows) rows.append(index.row()); - } + return rows; } diff --git a/src/widgets/dialogs/qfiledialog.cpp b/src/widgets/dialogs/qfiledialog.cpp index 41522bfa19..20dd235415 100644 --- a/src/widgets/dialogs/qfiledialog.cpp +++ b/src/widgets/dialogs/qfiledialog.cpp @@ -1189,12 +1189,17 @@ QList QFileDialogPrivate::userSelectedFiles() const if (!usingWidgets()) return addDefaultSuffixToUrls(selectedFiles_sys()); - foreach (const QModelIndex &index, qFileDialogUi->listView->selectionModel()->selectedRows()) + const QModelIndexList selectedRows = qFileDialogUi->listView->selectionModel()->selectedRows(); + files.reserve(selectedRows.size()); + foreach (const QModelIndex &index, selectedRows) files.append(QUrl::fromLocalFile(index.data(QFileSystemModel::FilePathRole).toString())); - if (files.isEmpty() && !lineEdit()->text().isEmpty()) - foreach (const QString &path, typedFiles()) + if (files.isEmpty() && !lineEdit()->text().isEmpty()) { + const QStringList typedFilesList = typedFiles(); + files.reserve(typedFilesList.size()); + foreach (const QString &path, typedFilesList) files.append(QUrl::fromLocalFile(path)); + } return files; } @@ -1228,7 +1233,9 @@ QStringList QFileDialogPrivate::addDefaultSuffixToFiles(const QStringList &files QList QFileDialogPrivate::addDefaultSuffixToUrls(const QList &urlsToFix) const { QList urls; - for (int i=0; idefaultSuffix(); @@ -1252,7 +1259,9 @@ QStringList QFileDialog::selectedFiles() const Q_D(const QFileDialog); QStringList files; - foreach (const QUrl &file, d->userSelectedFiles()) + const QList userSelectedFiles = d->userSelectedFiles(); + files.reserve(userSelectedFiles.size()); + foreach (const QUrl &file, userSelectedFiles) files.append(file.toLocalFile()); if (files.isEmpty() && d->usingWidgets()) { const FileMode fm = fileMode(); @@ -1277,7 +1286,9 @@ QList QFileDialog::selectedUrls() const return d->userSelectedFiles(); } else { QList urls; - foreach (const QString &file, selectedFiles()) + const QStringList selectedFileList = selectedFiles(); + urls.reserve(selectedFileList.size()); + foreach (const QString &file, selectedFileList) urls.append(QUrl::fromLocalFile(file)); return urls; } @@ -1356,7 +1367,9 @@ QStringList qt_strip_filters(const QStringList &filters) { QStringList strippedFilters; QRegExp r(QString::fromLatin1(QPlatformFileDialogHelper::filterRegExp)); - for (int i = 0; i < filters.count(); ++i) { + const int numFilters = filters.count(); + strippedFilters.reserve(numFilters); + for (int i = 0; i < numFilters; ++i) { QString filterName; int index = r.indexIn(filters[i]); if (index >= 0) @@ -1391,7 +1404,9 @@ void QFileDialog::setNameFilters(const QStringList &filters) Q_D(QFileDialog); d->defaultFileTypes = (filters == QStringList(QFileDialog::tr("All Files (*)"))); QStringList cleanedFilters; - for (int i = 0; i < filters.count(); ++i) { + const int numFilters = filters.count(); + cleanedFilters.reserve(numFilters); + for (int i = 0; i < numFilters; ++i) { cleanedFilters << filters[i].simplified(); } d->options->setNameFilters(cleanedFilters); @@ -2186,6 +2201,7 @@ QStringList QFileDialog::getOpenFileNames(QWidget *parent, const QStringList schemes = QStringList(QStringLiteral("file")); const QList selectedUrls = getOpenFileUrls(parent, caption, QUrl::fromLocalFile(dir), filter, selectedFilter, options, schemes); QStringList fileNames; + fileNames.reserve(selectedUrls.size()); foreach (const QUrl &url, selectedUrls) fileNames << url.toLocalFile(); return fileNames; @@ -2662,7 +2678,9 @@ void QFileDialogPrivate::saveSettings() settings.setValue(QLatin1String("treeViewHeader"), qFileDialogUi->treeView->header()->saveState()); } QStringList historyUrls; - foreach (const QString &path, q->history()) + const QStringList history = q->history(); + historyUrls.reserve(history.size()); + foreach (const QString &path, history) historyUrls << QUrl::fromLocalFile(path).toString(); settings.setValue(QLatin1String("history"), historyUrls); settings.setValue(QLatin1String("lastVisited"), lastVisitedDir()->toString()); diff --git a/src/widgets/dialogs/qfilesystemmodel.cpp b/src/widgets/dialogs/qfilesystemmodel.cpp index 4859231d95..3d767971a4 100644 --- a/src/widgets/dialogs/qfilesystemmodel.cpp +++ b/src/widgets/dialogs/qfilesystemmodel.cpp @@ -1183,8 +1183,11 @@ void QFileSystemModel::sort(int column, Qt::SortOrder order) emit layoutAboutToBeChanged(); QModelIndexList oldList = persistentIndexList(); QList > oldNodes; - for (int i = 0; i < oldList.count(); ++i) { - QPair pair(d->node(oldList.at(i)), oldList.at(i).column()); + const int nodeCount = oldList.count(); + oldNodes.reserve(nodeCount); + for (int i = 0; i < nodeCount; ++i) { + const QModelIndex &oldNode = oldList.at(i); + QPair pair(d->node(oldNode), oldNode.column()); oldNodes.append(pair); } @@ -1197,9 +1200,10 @@ void QFileSystemModel::sort(int column, Qt::SortOrder order) d->sortOrder = order; QModelIndexList newList; - for (int i = 0; i < oldNodes.count(); ++i) { - QModelIndex idx = d->index(oldNodes.at(i).first); - idx = idx.sibling(idx.row(), oldNodes.at(i).second); + for (int i = 0; i < nodeCount; ++i) { + const QPair &oldNode = oldNodes.at(i); + QModelIndex idx = d->index(oldNode.first); + idx = idx.sibling(idx.row(), oldNode.second); newList.append(idx); } changePersistentIndexList(oldList, newList); @@ -1648,7 +1652,9 @@ QStringList QFileSystemModel::nameFilters() const Q_D(const QFileSystemModel); QStringList filters; #ifndef QT_NO_REGEXP - for (int i = 0; i < d->nameFilters.size(); ++i) { + const int numNameFilters = d->nameFilters.size(); + filters.reserve(numNameFilters); + for (int i = 0; i < numNameFilters; ++i) { filters << d->nameFilters.at(i).pattern(); } #endif diff --git a/src/widgets/dialogs/qfontdialog.cpp b/src/widgets/dialogs/qfontdialog.cpp index d47dd3562f..688e8f5c13 100644 --- a/src/widgets/dialogs/qfontdialog.cpp +++ b/src/widgets/dialogs/qfontdialog.cpp @@ -619,6 +619,7 @@ void QFontDialogPrivate::updateSizes() int i = 0; int current = -1; QStringList str_sizes; + str_sizes.reserve(sizes.size()); for(QList::const_iterator it = sizes.constBegin(); it != sizes.constEnd(); ++it) { str_sizes.append(QString::number(*it)); if (current == -1 && *it == size) diff --git a/src/widgets/dialogs/qinputdialog.cpp b/src/widgets/dialogs/qinputdialog.cpp index 9c78f5e9ac..fb52fa4651 100644 --- a/src/widgets/dialogs/qinputdialog.cpp +++ b/src/widgets/dialogs/qinputdialog.cpp @@ -791,6 +791,7 @@ QStringList QInputDialog::comboBoxItems() const QStringList result; if (d->comboBox) { const int count = d->comboBox->count(); + result.reserve(count); for (int i = 0; i < count; ++i) result.append(d->comboBox->itemText(i)); } diff --git a/src/widgets/dialogs/qsidebar.cpp b/src/widgets/dialogs/qsidebar.cpp index 6fbcce801d..be3c060ba1 100644 --- a/src/widgets/dialogs/qsidebar.cpp +++ b/src/widgets/dialogs/qsidebar.cpp @@ -274,7 +274,9 @@ void QUrlModel::addUrls(const QList &list, int row, bool move) QList QUrlModel::urls() const { QList list; - for (int i = 0; i < rowCount(); ++i) + const int numRows = rowCount(); + list.reserve(numRows); + for (int i = 0; i < numRows; ++i) list.append(data(index(i, 0), UrlRole).toUrl()); return list; } @@ -334,10 +336,12 @@ void QUrlModel::dataChanged(const QModelIndex &topLeft, const QModelIndex &botto void QUrlModel::layoutChanged() { QStringList paths; - for (int i = 0; i < watching.count(); ++i) + const int numPaths = watching.count(); + paths.reserve(numPaths); + for (int i = 0; i < numPaths; ++i) paths.append(watching.at(i).second); watching.clear(); - for (int i = 0; i < paths.count(); ++i) { + for (int i = 0; i < numPaths; ++i) { QString path = paths.at(i); QModelIndex newIndex = fileSystemModel->index(path); watching.append(QPair(newIndex, path)); @@ -453,12 +457,14 @@ void QSidebar::removeEntry() { QList idxs = selectionModel()->selectedIndexes(); QList indexes; - for (int i = 0; i < idxs.count(); i++) + const int numIndexes = idxs.count(); + for (int i = 0; i < numIndexes; i++) indexes.append(idxs.at(i)); - for (int i = 0; i < indexes.count(); ++i) + for (int i = 0; i < numIndexes; ++i) { if (!indexes.at(i).data(QUrlModel::UrlRole).toUrl().path().isEmpty()) model()->removeRow(indexes.at(i).row()); + } } /*! diff --git a/src/widgets/graphicsview/qgraphicsanchorlayout_p.cpp b/src/widgets/graphicsview/qgraphicsanchorlayout_p.cpp index 8327777217..ce9344e2d9 100644 --- a/src/widgets/graphicsview/qgraphicsanchorlayout_p.cpp +++ b/src/widgets/graphicsview/qgraphicsanchorlayout_p.cpp @@ -752,8 +752,10 @@ static AnchorData *createSequence(Graph *graph, AnchorVertex *prev = before; QVector edges; + const int numVertices = vertices.count(); + edges.reserve(numVertices + 1); // Take from the graph, the edges that will be simplificated - for (int i = 0; i < vertices.count(); ++i) { + for (int i = 0; i < numVertices; ++i) { AnchorVertex *next = vertices.at(i); AnchorData *ad = graph->takeEdge(prev, next); Q_ASSERT(ad); @@ -2569,6 +2571,7 @@ QGraphicsAnchorLayoutPrivate::getGraphParts(Orientation orientation) if (!remainingConstraints.isEmpty()) { QList nonTrunkConstraints; + nonTrunkConstraints.reserve(remainingConstraints.size()); QLinkedList::iterator it = remainingConstraints.begin(); while (it != remainingConstraints.end()) { nonTrunkConstraints += *it; diff --git a/src/widgets/graphicsview/qgraphicsitemanimation.cpp b/src/widgets/graphicsview/qgraphicsitemanimation.cpp index 0a6fccf559..e5f0149d64 100644 --- a/src/widgets/graphicsview/qgraphicsitemanimation.cpp +++ b/src/widgets/graphicsview/qgraphicsitemanimation.cpp @@ -284,7 +284,9 @@ void QGraphicsItemAnimation::setPosAt(qreal step, const QPointF &pos) QList > QGraphicsItemAnimation::posList() const { QList > list; - for (int i = 0; i < d->xPosition.size(); ++i) + const int xPosCount = d->xPosition.size(); + list.reserve(xPosCount); + for (int i = 0; i < xPosCount; ++i) list << QPair(d->xPosition.at(i).step, QPointF(d->xPosition.at(i).value, d->yPosition.at(i).value)); return list; @@ -338,7 +340,9 @@ void QGraphicsItemAnimation::setRotationAt(qreal step, qreal angle) QList > QGraphicsItemAnimation::rotationList() const { QList > list; - for (int i = 0; i < d->rotation.size(); ++i) + const int numRotations = d->rotation.size(); + list.reserve(numRotations); + for (int i = 0; i < numRotations; ++i) list << QPair(d->rotation.at(i).step, d->rotation.at(i).value); return list; @@ -386,7 +390,9 @@ void QGraphicsItemAnimation::setTranslationAt(qreal step, qreal dx, qreal dy) QList > QGraphicsItemAnimation::translationList() const { QList > list; - for (int i = 0; i < d->xTranslation.size(); ++i) + const int numTranslations = d->xTranslation.size(); + list.reserve(numTranslations); + for (int i = 0; i < numTranslations; ++i) list << QPair(d->xTranslation.at(i).step, QPointF(d->xTranslation.at(i).value, d->yTranslation.at(i).value)); return list; @@ -435,7 +441,9 @@ void QGraphicsItemAnimation::setScaleAt(qreal step, qreal sx, qreal sy) QList > QGraphicsItemAnimation::scaleList() const { QList > list; - for (int i = 0; i < d->horizontalScale.size(); ++i) + const int numScales = d->horizontalScale.size(); + list.reserve(numScales); + for (int i = 0; i < numScales; ++i) list << QPair(d->horizontalScale.at(i).step, QPointF(d->horizontalScale.at(i).value, d->verticalScale.at(i).value)); return list; @@ -483,7 +491,9 @@ void QGraphicsItemAnimation::setShearAt(qreal step, qreal sh, qreal sv) QList > QGraphicsItemAnimation::shearList() const { QList > list; - for (int i = 0; i < d->horizontalShear.size(); ++i) + const int numShears = d->horizontalShear.size(); + list.reserve(numShears); + for (int i = 0; i < numShears; ++i) list << QPair(d->horizontalShear.at(i).step, QPointF(d->horizontalShear.at(i).value, d->verticalShear.at(i).value)); return list; diff --git a/src/widgets/graphicsview/qgraphicssceneindex.cpp b/src/widgets/graphicsview/qgraphicssceneindex.cpp index 8662f73d64..a76f6b6565 100644 --- a/src/widgets/graphicsview/qgraphicssceneindex.cpp +++ b/src/widgets/graphicsview/qgraphicssceneindex.cpp @@ -520,7 +520,9 @@ QList QGraphicsSceneIndex::estimateTopLevelItems(const QRectF & scened->ensureSortedTopLevelItems(); if (order == Qt::DescendingOrder) { QList sorted; - for (int i = scened->topLevelItems.size() - 1; i >= 0; --i) + const int numTopLevelItems = scened->topLevelItems.size(); + sorted.reserve(numTopLevelItems); + for (int i = numTopLevelItems - 1; i >= 0; --i) sorted << scened->topLevelItems.at(i); return sorted; } diff --git a/src/widgets/itemviews/qlistwidget.cpp b/src/widgets/itemviews/qlistwidget.cpp index 668bfda59d..0e1e56e966 100644 --- a/src/widgets/itemviews/qlistwidget.cpp +++ b/src/widgets/itemviews/qlistwidget.cpp @@ -1699,7 +1699,9 @@ QList QListWidget::selectedItems() const Q_D(const QListWidget); QModelIndexList indexes = selectionModel()->selectedIndexes(); QList items; - for (int i = 0; i < indexes.count(); ++i) + const int numIndexes = indexes.count(); + items.reserve(numIndexes); + for (int i = 0; i < numIndexes; ++i) items.append(d->listModel()->at(indexes.at(i).row())); return items; } diff --git a/src/widgets/itemviews/qtableview.cpp b/src/widgets/itemviews/qtableview.cpp index ae31387faf..238cbf3bcd 100644 --- a/src/widgets/itemviews/qtableview.cpp +++ b/src/widgets/itemviews/qtableview.cpp @@ -1884,6 +1884,7 @@ void QTableView::setSelection(const QRect &rect, QItemSelectionModel::SelectionF break; } } while (expanded); + selection.reserve((right - left + 1) * (bottom - top + 1)); for (int horizontal = left; horizontal <= right; ++horizontal) { int column = d->logicalColumn(horizontal); for (int vertical = top; vertical <= bottom; ++vertical) { @@ -1897,6 +1898,7 @@ void QTableView::setSelection(const QRect &rect, QItemSelectionModel::SelectionF int left = d->visualColumn(tl.column()); int bottom = d->visualRow(br.row()); int right = d->visualColumn(br.column()); + selection.reserve((right - left + 1) * (bottom - top + 1)); for (int horizontal = left; horizontal <= right; ++horizontal) { int column = d->logicalColumn(horizontal); for (int vertical = top; vertical <= bottom; ++vertical) { @@ -1908,6 +1910,7 @@ void QTableView::setSelection(const QRect &rect, QItemSelectionModel::SelectionF } else if (horizontalMoved) { int left = d->visualColumn(tl.column()); int right = d->visualColumn(br.column()); + selection.reserve(right - left + 1); for (int visual = left; visual <= right; ++visual) { int column = d->logicalColumn(visual); QModelIndex topLeft = d->model->index(tl.row(), column, d->root); @@ -1917,6 +1920,7 @@ void QTableView::setSelection(const QRect &rect, QItemSelectionModel::SelectionF } else if (verticalMoved) { int top = d->visualRow(tl.row()); int bottom = d->visualRow(br.row()); + selection.reserve(bottom - top + 1); for (int visual = top; visual <= bottom; ++visual) { int row = d->logicalRow(visual); QModelIndex topLeft = d->model->index(row, tl.column(), d->root); diff --git a/src/widgets/itemviews/qtablewidget.cpp b/src/widgets/itemviews/qtablewidget.cpp index b2d4abe5ac..f0c7ac0d32 100644 --- a/src/widgets/itemviews/qtablewidget.cpp +++ b/src/widgets/itemviews/qtablewidget.cpp @@ -507,11 +507,15 @@ void QTableModel::sort(int column, Qt::SortOrder order) QVector sorted_table(tableItems.count()); QModelIndexList from; QModelIndexList to; - for (int i = 0; i < rowCount(); ++i) { + const int numRows = rowCount(); + const int numColumns = columnCount(); + from.reserve(numRows * numColumns); + to.reserve(numRows * numColumns); + for (int i = 0; i < numRows; ++i) { int r = (i < sortable.count() ? sortable.at(i).second : unsortable.at(i - sortable.count())); - for (int c = 0; c < columnCount(); ++c) { + for (int c = 0; c < numColumns; ++c) { sorted_table[tableIndex(i, c)] = item(r, c); from.append(createIndex(r, c)); to.append(createIndex(i, c)); diff --git a/src/widgets/widgets/qabstractscrollarea.cpp b/src/widgets/widgets/qabstractscrollarea.cpp index 5e45c66f3b..65d06eafc5 100644 --- a/src/widgets/widgets/qabstractscrollarea.cpp +++ b/src/widgets/widgets/qabstractscrollarea.cpp @@ -210,10 +210,12 @@ QWidgetList QAbstractScrollAreaScrollBarContainer::widgets(LogicalPosition posit QWidgetList list; const int scrollBarIndex = scrollBarLayoutIndex(); if (position == LogicalLeft) { + list.reserve(scrollBarIndex); for (int i = 0; i < scrollBarIndex; ++i) list.append(layout->itemAt(i)->widget()); } else if (position == LogicalRight) { const int layoutItemCount = layout->count(); + list.reserve(layoutItemCount - (scrollBarIndex + 1)); for (int i = scrollBarIndex + 1; i < layoutItemCount; ++i) list.append(layout->itemAt(i)->widget()); } diff --git a/src/widgets/widgets/qcombobox.cpp b/src/widgets/widgets/qcombobox.cpp index ef80e359df..d4deea652b 100644 --- a/src/widgets/widgets/qcombobox.cpp +++ b/src/widgets/widgets/qcombobox.cpp @@ -2263,6 +2263,7 @@ void QComboBox::insertItems(int index, const QStringList &list) // construct a QStandardItem, reducing the number of expensive signals from the model if (QStandardItemModel *m = qobject_cast(d->model)) { QList items; + items.reserve(insertCount); QStandardItem *hiddenRoot = m->invisibleRootItem(); for (int i = 0; i < insertCount; ++i) items.append(new QStandardItem(list.at(i))); diff --git a/src/widgets/widgets/qdockarealayout.cpp b/src/widgets/widgets/qdockarealayout.cpp index 8054c8aa46..c61984a457 100644 --- a/src/widgets/widgets/qdockarealayout.cpp +++ b/src/widgets/widgets/qdockarealayout.cpp @@ -2211,8 +2211,10 @@ QSet QDockAreaLayoutInfo::usedTabBars() const QSet QDockAreaLayoutInfo::usedSeparatorWidgets() const { QSet result; + const int numSeparatorWidgets = separatorWidgets.count(); + result.reserve(numSeparatorWidgets); - for (int i = 0; i < separatorWidgets.count(); ++i) + for (int i = 0; i < numSeparatorWidgets; ++i) result << separatorWidgets.at(i); for (int i = 0; i < item_list.count(); ++i) { diff --git a/src/widgets/widgets/qsplitter.cpp b/src/widgets/widgets/qsplitter.cpp index 38773a4fbf..c2081c15f8 100644 --- a/src/widgets/widgets/qsplitter.cpp +++ b/src/widgets/widgets/qsplitter.cpp @@ -1502,8 +1502,11 @@ QList QSplitter::sizes() const Q_D(const QSplitter); ensurePolished(); + const int numSizes = d->list.size(); QList list; - for (int i = 0; i < d->list.size(); ++i) { + list.reserve(numSizes); + + for (int i = 0; i < numSizes; ++i) { QSplitterLayoutStruct *s = d->list.at(i); list.append(d->pick(s->rect.size())); } @@ -1598,8 +1601,10 @@ QByteArray QSplitter::saveState() const stream << qint32(SplitterMagic); stream << qint32(version); + const int numSizes = d->list.size(); QList list; - for (int i = 0; i < d->list.size(); ++i) { + list.reserve(numSizes); + for (int i = 0; i < numSizes; ++i) { QSplitterLayoutStruct *s = d->list.at(i); list.append(s->sizer); } diff --git a/src/widgets/widgets/qwidgettextcontrol.cpp b/src/widgets/widgets/qwidgettextcontrol.cpp index 22d199fc74..bebdd16736 100644 --- a/src/widgets/widgets/qwidgettextcontrol.cpp +++ b/src/widgets/widgets/qwidgettextcontrol.cpp @@ -2439,10 +2439,13 @@ QList QWidgetTextControl::extraSelections() const { Q_D(const QWidgetTextControl); QList selections; - for (int i = 0; i < d->extraSelections.count(); ++i) { + const int numExtraSelections = d->extraSelections.count(); + selections.reserve(numExtraSelections); + for (int i = 0; i < numExtraSelections; ++i) { QTextEdit::ExtraSelection sel; - sel.cursor = d->extraSelections.at(i).cursor; - sel.format = d->extraSelections.at(i).format; + const QAbstractTextDocumentLayout::Selection &sel2 = d->extraSelections.at(i); + sel.cursor = sel2.cursor; + sel.format = sel2.format; selections.append(sel); } return selections; -- cgit v1.2.3