refs #386, performance issues

* keep split per callsign map in IInterpolator (so it is available for all interpolators)
* Interpolator using CWorker, so it can run in background
* added signals to provider to add split situations / callsigns
* adjustments to airspace / context for those signals
* thread safe access to those from interpolator
* renamed from rendered to remote aircraft as discussed
* adjust samples
* removed no longer required functions in timestampobjectlist
* changed connectioStatusChanged from uint -> int
This commit is contained in:
Klaus Basan
2015-02-20 03:14:49 +01:00
parent 1ff0cfa618
commit f8bebf5ffa
37 changed files with 835 additions and 583 deletions

View File

@@ -208,7 +208,7 @@ namespace BlackMiscTest
out << "Reads by times / callsigns: " << timer.elapsed() << "ms" << endl;
timer.start();
QMap<CCallsign, CAircraftSituationList> splitList = situations.splitPerCallsign();
QHash<CCallsign, CAircraftSituationList> splitList = situations.splitPerCallsign();
Q_ASSERT(splitList.size() == numberOfCallsigns);
for (int t = 0; t < numberOfTimes; t++)
{
@@ -310,21 +310,8 @@ namespace BlackMiscTest
}
out << "Single, pre-sorted split by time upfront, then callsigns: " << timer.elapsed() << "ms" << endl;
situations.sortOldestFirst(); // eliminate impact of sort
timer.start();
split = situations.splitByTimeNoSortAscendingTimestamp(halfTime);
for (int cs = 0; cs < numberOfCallsigns; cs++)
{
CCallsign callsign("CS" + QString::number(cs));
CAircraftSituationList csSituationsBefore = split[0].findByCallsign(callsign);
CAircraftSituationList csSituationsAfter = split[1].findByCallsign(callsign);
Q_UNUSED(csSituationsBefore);
Q_UNUSED(csSituationsAfter);
}
out << "Single, unsorted split by time upfront, then callsigns: " << timer.elapsed() << "ms" << endl;
timer.start();
QMap<CCallsign, CAircraftSituationList> csSituations = situations.splitPerCallsign();
QHash<CCallsign, CAircraftSituationList> csSituations = situations.splitPerCallsign();
out << "Split by " << csSituations.size() << " callsigns, " << timer.elapsed() << "ms" << endl;
timer.start();