From d2d27a8eac4b34d08a5a48ee58e265419076fb79 Mon Sep 17 00:00:00 2001 From: Mat Sutcliffe Date: Sat, 8 Sep 2018 17:36:53 +0100 Subject: [PATCH] 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. --- .../testaircraftsituation.cpp | 27 ++++++++++++------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/tests/blackmisc/aviation/testaircraftsituation/testaircraftsituation.cpp b/tests/blackmisc/aviation/testaircraftsituation/testaircraftsituation.cpp index e45e62bcd..0a7f74e9b 100644 --- a/tests/blackmisc/aviation/testaircraftsituation/testaircraftsituation.cpp +++ b/tests/blackmisc/aviation/testaircraftsituation/testaircraftsituation.cpp @@ -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 listOfLists1; + CSequence 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();