mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-15 09:15:34 +08:00
refs #784 Extend JSON performance sample to test memoization of CAircraftModelList.
This commit is contained in:
committed by
Klaus Basan
parent
45bb9a2737
commit
f4982ffbc4
@@ -14,14 +14,17 @@
|
|||||||
#include "blackcore/db/databasereader.h"
|
#include "blackcore/db/databasereader.h"
|
||||||
#include "blackconfig/buildconfig.h"
|
#include "blackconfig/buildconfig.h"
|
||||||
#include "blackmisc/simulation/aircraftmodellist.h"
|
#include "blackmisc/simulation/aircraftmodellist.h"
|
||||||
|
#include "blackmisc/aviation/aircrafticaocodelist.h"
|
||||||
#include "blackmisc/aviation/aircraftsituation.h"
|
#include "blackmisc/aviation/aircraftsituation.h"
|
||||||
#include "blackmisc/aviation/aircraftsituationlist.h"
|
#include "blackmisc/aviation/aircraftsituationlist.h"
|
||||||
#include "blackmisc/aviation/altitude.h"
|
#include "blackmisc/aviation/altitude.h"
|
||||||
#include "blackmisc/aviation/atcstation.h"
|
#include "blackmisc/aviation/atcstation.h"
|
||||||
#include "blackmisc/aviation/atcstationlist.h"
|
#include "blackmisc/aviation/atcstationlist.h"
|
||||||
#include "blackmisc/aviation/callsign.h"
|
#include "blackmisc/aviation/callsign.h"
|
||||||
|
#include "blackmisc/aviation/liverylist.h"
|
||||||
#include "blackmisc/geo/coordinategeodetic.h"
|
#include "blackmisc/geo/coordinategeodetic.h"
|
||||||
#include "blackmisc/pq/units.h"
|
#include "blackmisc/pq/units.h"
|
||||||
|
#include "blackmisc/simulation/distributorlist.h"
|
||||||
#include "blackmisc/stringutils.h"
|
#include "blackmisc/stringutils.h"
|
||||||
#include "blackmisc/testing.h"
|
#include "blackmisc/testing.h"
|
||||||
|
|
||||||
@@ -336,14 +339,31 @@ namespace BlackSample
|
|||||||
{
|
{
|
||||||
QTime timer;
|
QTime timer;
|
||||||
auto situations = createSituations(0, 10000, 10);
|
auto situations = createSituations(0, 10000, 10);
|
||||||
|
auto models = createModels(10000, 100);
|
||||||
|
|
||||||
timer.start();
|
timer.start();
|
||||||
QString s = situations.toJsonString();
|
QJsonObject json = situations.toJson();
|
||||||
out << "Convert 100,000 aircraft situations to JSON: " << timer.elapsed() << "ms" << endl;
|
out << "Convert 100,000 aircraft situations to JSON: " << timer.elapsed() << "ms" << endl;
|
||||||
|
|
||||||
timer.start();
|
timer.start();
|
||||||
situations.convertFromJson(s);
|
situations.convertFromJson(json);
|
||||||
out << "Convert 100,000 aircraft situations from JSON: " << timer.elapsed() << "ms" << endl << endl;
|
out << "Convert 100,000 aircraft situations from JSON: " << timer.elapsed() << "ms" << endl << endl;
|
||||||
|
|
||||||
|
timer.start();
|
||||||
|
json = models.toJson();
|
||||||
|
out << "Convert 10,000 aircraft models to JSON (naive): " << timer.elapsed() << "ms" << endl;
|
||||||
|
|
||||||
|
timer.start();
|
||||||
|
models.convertFromJson(json);
|
||||||
|
out << "Convert 10,000 aircraft models from JSON (naive): " << timer.elapsed() << "ms" << endl << endl;
|
||||||
|
|
||||||
|
timer.start();
|
||||||
|
json = models.toMemoizedJson();
|
||||||
|
out << "Convert 10,000 aircraft models to JSON (memoize): " << timer.elapsed() << "ms" << endl;
|
||||||
|
|
||||||
|
timer.start();
|
||||||
|
models.convertFromMemoizedJson(json);
|
||||||
|
out << "Convert 10,000 aircraft models from JSON (memoize): " << timer.elapsed() << "ms" << endl << endl;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -481,4 +501,28 @@ namespace BlackSample
|
|||||||
return situations;
|
return situations;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CAircraftModelList CSamplesPerformance::createModels(int numberOfModels, int numberOfMemoParts)
|
||||||
|
{
|
||||||
|
CAircraftIcaoCodeList aircraftIcaos;
|
||||||
|
CLiveryList liveries;
|
||||||
|
CDistributorList distributors;
|
||||||
|
for (int i = 0; i < numberOfMemoParts; ++i)
|
||||||
|
{
|
||||||
|
aircraftIcaos.push_back(CAircraftIcaoCode("A" + QString::number(i), "A" + QString::number(i), "L1P", "Lego", "Foo", "M", false, false, false));
|
||||||
|
liveries.push_back(CLivery("A" + QString::number(i), CAirlineIcaoCode("A" + QString::number(i), "Foo", CCountry("DE", "Germany"), "Foo", false, false), "Foo", "red", "blue", false));
|
||||||
|
distributors.push_back(CDistributor(QString::number(i), "Foo", {}, {}, CSimulatorInfo::FSX));
|
||||||
|
}
|
||||||
|
|
||||||
|
CAircraftModelList models;
|
||||||
|
for (int i = 0; i < numberOfModels; ++i)
|
||||||
|
{
|
||||||
|
const auto &aircraftIcao = aircraftIcaos[qrand() % numberOfMemoParts];
|
||||||
|
const auto &livery = liveries[qrand() % numberOfMemoParts];
|
||||||
|
const auto &distributor = distributors[qrand() % numberOfMemoParts];
|
||||||
|
models.push_back(CAircraftModel(QString::number(i), CAircraftModel::TypeUnknown, CSimulatorInfo::FSX, QString::number(i), QString::number(i), aircraftIcao, livery));
|
||||||
|
models.back().setDistributor(distributor);
|
||||||
|
}
|
||||||
|
return models;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
#define BLACKSAMPLE_SAMPLESPERFORMANCE_H
|
#define BLACKSAMPLE_SAMPLESPERFORMANCE_H
|
||||||
|
|
||||||
#include "blackmisc/aviation/aircraftsituationlist.h"
|
#include "blackmisc/aviation/aircraftsituationlist.h"
|
||||||
|
#include "blackmisc/simulation/aircraftmodellist.h"
|
||||||
|
|
||||||
#include <QTextStream>
|
#include <QTextStream>
|
||||||
#include <QtGlobal>
|
#include <QtGlobal>
|
||||||
@@ -47,6 +48,9 @@ namespace BlackSample
|
|||||||
//! Situation values for testing
|
//! Situation values for testing
|
||||||
static BlackMisc::Aviation::CAircraftSituationList createSituations(qint64 baseTimeEpoch, int numberOfCallsigns, int numberOfTimes);
|
static BlackMisc::Aviation::CAircraftSituationList createSituations(qint64 baseTimeEpoch, int numberOfCallsigns, int numberOfTimes);
|
||||||
|
|
||||||
|
//! Model values for testing
|
||||||
|
static BlackMisc::Simulation::CAircraftModelList createModels(int numberOfModels, int numberOfMemoParts);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static const qint64 DeltaTime = 10;
|
static const qint64 DeltaTime = 10;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user