mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-17 19:05:31 +08:00
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:
committed by
Klaus Basan
parent
1e5525e08f
commit
d2d27a8eac
@@ -229,26 +229,33 @@ namespace BlackMiscTest
|
|||||||
|
|
||||||
void CTestAircraftSituation::sortHint()
|
void CTestAircraftSituation::sortHint()
|
||||||
{
|
{
|
||||||
|
constexpr int Max = 500000;
|
||||||
CAircraftSituationList situations = testSituations();
|
CAircraftSituationList situations = testSituations();
|
||||||
situations.sortAdjustedLatestFirst();
|
situations.sortAdjustedLatestFirst();
|
||||||
|
CSequence<CAircraftSituationList> listOfLists1;
|
||||||
constexpr int Max = 500000;
|
CSequence<CAircraftSituationList> listOfLists2;
|
||||||
QTime time;
|
|
||||||
time.start();
|
|
||||||
for (int i = 0; i < Max; ++i)
|
for (int i = 0; i < Max; ++i)
|
||||||
{
|
{
|
||||||
CAircraftSituation s1 = situations.oldestAdjustedObject();
|
listOfLists1.push_back(situations);
|
||||||
CAircraftSituation s2 = situations.latestAdjustedObject();
|
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());
|
QVERIFY(s1.getAdjustedMSecsSinceEpoch() < s2.getAdjustedMSecsSinceEpoch());
|
||||||
}
|
}
|
||||||
const int noHint = time.elapsed();
|
const int noHint = time.elapsed();
|
||||||
situations.setAdjustedSortHint(CAircraftSituationList::AdjustedTimestampLatestFirst);
|
|
||||||
|
|
||||||
time.start();
|
time.start();
|
||||||
for (int i = 0; i < Max; ++i)
|
for (const CAircraftSituationList &s : as_const(listOfLists2))
|
||||||
{
|
{
|
||||||
CAircraftSituation s1 = situations.oldestAdjustedObject();
|
const CAircraftSituation s1 = s.oldestAdjustedObject();
|
||||||
CAircraftSituation s2 = situations.latestAdjustedObject();
|
const CAircraftSituation s2 = s.latestAdjustedObject();
|
||||||
QVERIFY(s1.getAdjustedMSecsSinceEpoch() < s2.getAdjustedMSecsSinceEpoch());
|
QVERIFY(s1.getAdjustedMSecsSinceEpoch() < s2.getAdjustedMSecsSinceEpoch());
|
||||||
}
|
}
|
||||||
const int hint = time.elapsed();
|
const int hint = time.elapsed();
|
||||||
|
|||||||
Reference in New Issue
Block a user