Rework sortHint test to pre-construct 500k separate situationlist objects

and then test each one, instead of just testing a single list object 500k times.
As a result, performance on Mac is comparable to Windows and Linux.
This commit is contained in:
Mat Sutcliffe
2018-09-08 17:36:53 +01:00
committed by Klaus Basan
parent 1e5525e08f
commit d2d27a8eac

View File

@@ -229,26 +229,33 @@ namespace BlackMiscTest
void CTestAircraftSituation::sortHint()
{
constexpr int Max = 500000;
CAircraftSituationList situations = testSituations();
situations.sortAdjustedLatestFirst();
constexpr int Max = 500000;
QTime time;
time.start();
CSequence<CAircraftSituationList> listOfLists1;
CSequence<CAircraftSituationList> listOfLists2;
for (int i = 0; i < Max; ++i)
{
CAircraftSituation s1 = situations.oldestAdjustedObject();
CAircraftSituation s2 = situations.latestAdjustedObject();
listOfLists1.push_back(situations);
listOfLists2.push_back(situations);
listOfLists2.back().setAdjustedSortHint(CAircraftSituationList::AdjustedTimestampLatestFirst);
}
QTime time;
time.start();
for (const CAircraftSituationList &s : as_const(listOfLists1))
{
const CAircraftSituation s1 = s.oldestAdjustedObject();
const CAircraftSituation s2 = s.latestAdjustedObject();
QVERIFY(s1.getAdjustedMSecsSinceEpoch() < s2.getAdjustedMSecsSinceEpoch());
}
const int noHint = time.elapsed();
situations.setAdjustedSortHint(CAircraftSituationList::AdjustedTimestampLatestFirst);
time.start();
for (int i = 0; i < Max; ++i)
for (const CAircraftSituationList &s : as_const(listOfLists2))
{
CAircraftSituation s1 = situations.oldestAdjustedObject();
CAircraftSituation s2 = situations.latestAdjustedObject();
const CAircraftSituation s1 = s.oldestAdjustedObject();
const CAircraftSituation s2 = s.latestAdjustedObject();
QVERIFY(s1.getAdjustedMSecsSinceEpoch() < s2.getAdjustedMSecsSinceEpoch());
}
const int hint = time.elapsed();