From 975d0d7bfa2994fd5d13f40a70ea0851c702674f Mon Sep 17 00:00:00 2001 From: Frank Reininghaus Date: Fri, 24 Apr 2015 01:44:31 +0200 Subject: [PATCH] Remove obsolete benchmark for inserting many child items I added this benchmark quite a long time ago in order to check that the changes in dc6322dc090bcaec40d75522debad1edfb25b27a do not make inserting many child items into the model slower. The test tries to insert child items of different subfolders at the same time, which cannot happen during normal usage because KDirLister only tells us about one subfolder at a time. The code was commented out a long time ago because it is no longer compatible with the (greatly improved) new internal structure of KFileItemModel. I think that it's not worth porting the benchmark because it fulfilled its intended purpose a long time ago. Even if someone decides to make a simplified working new benchmark out of it at some point, it does not make much sense to keep this commented-out code around for years. It can still be found in the git history - after all, that's what version control systems are for. --- src/tests/kfileitemmodelbenchmark.cpp | 108 -------------------------- 1 file changed, 108 deletions(-) diff --git a/src/tests/kfileitemmodelbenchmark.cpp b/src/tests/kfileitemmodelbenchmark.cpp index b73485efb..3ff0405fd 100644 --- a/src/tests/kfileitemmodelbenchmark.cpp +++ b/src/tests/kfileitemmodelbenchmark.cpp @@ -62,7 +62,6 @@ public: private slots: void insertAndRemoveManyItems_data(); void insertAndRemoveManyItems(); - void insertManyChildItems(); private: static KFileItemList createFileItemList(const QStringList& fileNames, const QString& urlPrefix = QLatin1String("file:///")); @@ -209,113 +208,6 @@ void KFileItemModelBenchmark::insertAndRemoveManyItems() } } -void KFileItemModelBenchmark::insertManyChildItems() -{ - // TODO: this function needs to be adjusted to the changes in KFileItemModel - // (replacement of slotNewItems(KFileItemList) by slotItemsAdded(KUrl,KFileItemList)) - // Currently, this function tries to insert child items of multiple - // directories by invoking the slot only once. -#if 0 - qInstallMsgHandler(myMessageOutput); - - KFileItemModel model; - - // Avoid overhead caused by natural sorting. - model.m_naturalSorting = false; - - QSet modelRoles = model.roles(); - modelRoles << "isExpanded" << "isExpandable" << "expandedParentsCount"; - model.setRoles(modelRoles); - model.setSortDirectoriesFirst(false); - - // Create a test folder with a 3-level tree structure of folders. - TestDir testFolder; - int numberOfFolders = 0; - - QStringList subFolderNames; - subFolderNames << "a/" << "b/" << "c/" << "d/"; - - foreach (const QString& s1, subFolderNames) { - ++numberOfFolders; - foreach (const QString& s2, subFolderNames) { - ++numberOfFolders; - foreach (const QString& s3, subFolderNames) { - testFolder.createDir("level-1-" + s1 + "level-2-" + s2 + "level-3-" + s3); - ++numberOfFolders; - } - } - } - - // Open the folder in the model and expand all subfolders. - model.loadDirectory(testFolder.url()); - QVERIFY(QTest::kWaitForSignal(&model, SIGNAL(itemsInserted(KItemRangeList)), DefaultTimeout)); - - int index = 0; - while (index < model.count()) { - if (model.isExpandable(index)) { - model.setExpanded(index, true); - - if (!model.data(index).value("text").toString().startsWith("level-3")) { - // New subfolders will appear unless we are on the final level already. - QVERIFY(QTest::kWaitForSignal(&model, SIGNAL(itemsInserted(KItemRangeList)), DefaultTimeout)); - } - - QVERIFY(model.isExpanded(index)); - } - ++index; - } - - QCOMPARE(model.count(), numberOfFolders); - - // Create a list of many file items, which will be added to each of the - // "level 1", "level 2", and "level 3" folders. - const int filesPerDirectory = 500; - QStringList allStrings; - for (int i = 0; i < filesPerDirectory; ++i) { - allStrings << QString::number(i); - } - allStrings.sort(); - - KFileItemList newItems; - - // Also keep track of all expected items, including the existing - // folders, to verify the final state of the model. - KFileItemList allExpectedItems; - - for (int i = 0; i < model.count(); ++i) { - const KFileItem folderItem = model.fileItem(i); - allExpectedItems << folderItem; - - const KUrl folderUrl = folderItem.url(); - KFileItemList itemsInFolder = createFileItemList(allStrings, folderUrl.url(KUrl::AddTrailingSlash)); - - newItems.append(itemsInFolder); - allExpectedItems.append(itemsInFolder); - } - - // Bring the items into random order. - std::random_device rd; - std::mt19937 g(rd()); - std::shuffle(newItems.begin(), newItems.end(), g); - - // Measure how long it takes to insert and then remove all files. - QBENCHMARK { - model.slotNewItems(newItems); - model.slotCompleted(); - - QCOMPARE(model.count(), allExpectedItems.count()); - QVERIFY(model.isConsistent()); - for (int i = 0; i < model.count(); ++i) { - QCOMPARE(model.fileItem(i), allExpectedItems.at(i)); - } - - model.slotItemsDeleted(newItems); - QCOMPARE(model.count(), numberOfFolders); - QVERIFY(model.isConsistent()); - } -#endif -} - KFileItemList KFileItemModelBenchmark::createFileItemList(const QStringList& fileNames, const QString& prefix) { // Suppress 'file does not exist anymore' messages from KFileItemPrivate::init(). -- 2.47.3