From e4a4d72fd206fc2d5c1095b39b2839e53cd114bb Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Wed, 25 Nov 2015 00:37:42 +0100 Subject: Optimize findLast This just gave a 700% boost to query performance from ~2k to 14k reads per second... --- tests/storagetest.cpp | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'tests') diff --git a/tests/storagetest.cpp b/tests/storagetest.cpp index bef8755..d950961 100644 --- a/tests/storagetest.cpp +++ b/tests/storagetest.cpp @@ -376,6 +376,7 @@ private Q_SLOTS: db.write("sub1","value1"); db.write("sub2","value2"); db.write("wub3","value3"); + db.write("wub4","value4"); QByteArray result; db.findLatest("sub", [&](const QByteArray &key, const QByteArray &value) { result = value; @@ -384,6 +385,35 @@ private Q_SLOTS: QCOMPARE(result, QByteArray("value2")); } + void testFindLatestInSingle() + { + Akonadi2::Storage store(testDataPath, dbName, Akonadi2::Storage::ReadWrite); + auto transaction = store.createTransaction(Akonadi2::Storage::ReadWrite); + auto db = transaction.openDatabase("test", nullptr, false); + db.write("sub2","value2"); + QByteArray result; + db.findLatest("sub", [&](const QByteArray &key, const QByteArray &value) { + result = value; + }); + + QCOMPARE(result, QByteArray("value2")); + } + + void testFindLast() + { + Akonadi2::Storage store(testDataPath, dbName, Akonadi2::Storage::ReadWrite); + auto transaction = store.createTransaction(Akonadi2::Storage::ReadWrite); + auto db = transaction.openDatabase("test", nullptr, false); + db.write("sub2","value2"); + db.write("wub3","value3"); + QByteArray result; + db.findLatest("wub", [&](const QByteArray &key, const QByteArray &value) { + result = value; + }); + + QCOMPARE(result, QByteArray("value3")); + } + void testRecordRevision() { Akonadi2::Storage store(testDataPath, dbName, Akonadi2::Storage::ReadWrite); -- cgit v1.2.3