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 dc6322dc09 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.
This commit is contained in:
Frank Reininghaus 2015-04-24 01:44:31 +02:00
parent 82bf562c34
commit 975d0d7bfa

View file

@ -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<QByteArray> 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().