From b5535a824e21ac95bb074383acfec42fba20747e Mon Sep 17 00:00:00 2001 From: Aleix Pol Date: Mon, 8 Feb 2016 14:19:06 +0100 Subject: [PATCH 1/2] Improve usage of Qt containers Reserve size before filling. It will save some allocation calls. --- qt/database.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/qt/database.cpp b/qt/database.cpp index 0081e40b..47f29475 100644 --- a/qt/database.cpp +++ b/qt/database.cpp @@ -201,16 +201,18 @@ Component xapianDocToComponent(Xapian::Document document) { str = document.get_value (XapianValues::SCREENSHOTS); pb_scrs.ParseFromString (str); QList screenshots; + screenshots.reserve(pb_scrs.screenshot_size ()); for (int i = 0; i < pb_scrs.screenshot_size (); i++) { const Screenshots_Screenshot& pb_scr = pb_scrs.screenshot (i); Appstream::Screenshot scr; - QList images; if (pb_scr.primary()) scr.setDefault(true); if (pb_scr.has_caption()) scr.setCaption(QString::fromStdString(pb_scr.caption())); + QList images; + images.reserve(pb_scr.image_size()); for (int j = 0; j < pb_scr.image_size(); j++) { const Screenshots_Image& pb_img = pb_scr.image(j); Appstream::Image image; @@ -259,6 +261,7 @@ Component xapianDocToComponent(Xapian::Document document) { QList parseSearchResults(Xapian::MSet matches) { QList components; + components.reserve(matches.size()); for (Xapian::MSetIterator it = matches.begin(); it != matches.end(); ++it) { Xapian::Document document = it.get_document (); components << xapianDocToComponent(document); @@ -268,6 +271,7 @@ QList parseSearchResults(Xapian::MSet matches) { QList< Component > Database::allComponents() const { QList components; + components.reserve(d->m_db.get_termfreq(std::string())); // Iterate through all Xapian documents Xapian::PostingIterator it = d->m_db.postlist_begin (std::string()); From 2ce571c9b8aa2dc98e4fee76c2d56e38ff84e0f1 Mon Sep 17 00:00:00 2001 From: Aleix Pol Date: Mon, 8 Feb 2016 14:19:35 +0100 Subject: [PATCH 2/2] Don't compute screenshot images and then forget about them --- qt/database.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/qt/database.cpp b/qt/database.cpp index 47f29475..c760818f 100644 --- a/qt/database.cpp +++ b/qt/database.cpp @@ -229,6 +229,7 @@ Component xapianDocToComponent(Xapian::Document document) { images.append(image); } + scr.setImages(images); screenshots.append(scr); }