Ref T275, Ref T280 hint for timestamp based list if they are already sorted

This commit is contained in:
Klaus Basan
2018-06-13 16:36:30 +02:00
parent e7cfae4fcc
commit 978fe5eea2
6 changed files with 116 additions and 12 deletions

View File

@@ -20,7 +20,9 @@
#include "blackmisc/math/mathutils.h"
#include <QTest>
#include <QTimer>
#include <QDateTime>
#include <QDebug>
using namespace BlackMisc::Aviation;
using namespace BlackMisc::PhysicalQuantities;
@@ -184,6 +186,36 @@ namespace BlackMiscTest
QVERIFY2(corAlt == (ep.getAltitude() + cg), "Expect correction by CG");
}
void CTestAircraftSituation::sortHint()
{
CAircraftSituationList situations = testSituations();
situations.sortAdjustedLatestFirst();
constexpr int Max = 500000;
QTime time;
time.start();
for (int i = 0; i < Max; ++i)
{
CAircraftSituation s1 = situations.oldestAdjustedObject();
CAircraftSituation s2 = situations.latestAdjustedObject();
QVERIFY(s1.getAdjustedMSecsSinceEpoch() < s2.getAdjustedMSecsSinceEpoch());
}
const int noHint = time.elapsed();
situations.setAdjustedSortHint(CAircraftSituationList::AdjustedTimestampLatestFirst);
time.start();
for (int i = 0; i < Max; ++i)
{
CAircraftSituation s1 = situations.oldestAdjustedObject();
CAircraftSituation s2 = situations.latestAdjustedObject();
QVERIFY(s1.getAdjustedMSecsSinceEpoch() < s2.getAdjustedMSecsSinceEpoch());
}
const int hint = time.elapsed();
qDebug() << "Access without hint" << noHint << "ms";
qDebug() << "Access with hint" << hint << "ms";
QVERIFY2(hint < noHint, "Expected hinted sort being faster");
}
CAircraftSituationList CTestAircraftSituation::testSituations()
{
// "Kugaaruk Airport","Pelly Bay","Canada","YBB","CYBB",68.534401,-89.808098,56,-7,"A","America/Edmonton","airport","OurAirports"