X-Plane model loader: performance tweaks.

Summary:
Using `QStringRef` and `QLatin1String` to avoid unnecessary allocations and conversions.

Depends on D12.

Reviewers: rwinklmeier, kbasan

Subscribers: jenkins

Tags: #swift_pilot_client

Differential Revision: https://dev.swift-project.org/D13
This commit is contained in:
Mathew Sutcliffe
2017-04-26 22:52:25 +01:00
parent 4e23cd1382
commit fbc9c37646

View File

@@ -190,27 +190,27 @@ namespace BlackMisc
{ {
while (!ts.atEnd()) while (!ts.atEnd())
{ {
QString line = ts.readLine(); const QString line = ts.readLine();
QStringList tokens = line.split(' ', QString::SkipEmptyParts); QVector<QStringRef> tokens = line.splitRef(' ', QString::SkipEmptyParts);
if (tokens.at(0) != "P" || tokens.size() < 3) { continue; } if (tokens.at(0) != QLatin1String("P") || tokens.size() < 3) { continue; }
if (tokens.at(1) == "acf/_ICAO") if (tokens.at(1) == QLatin1String("acf/_ICAO"))
{ {
const CAircraftIcaoCode icao(tokens.at(2)); const CAircraftIcaoCode icao(tokens.at(2).toString());
model.setAircraftIcaoCode(icao); model.setAircraftIcaoCode(icao);
} }
else if (tokens.at(1) == "acf/_descrip") else if (tokens.at(1) == QLatin1String("acf/_descrip"))
{ {
const QString desc(tokens.mid(2).join(' ')); const QString desc(line.mid(tokens.at(2).position()));
model.setDescription(desc); model.setDescription(desc);
} }
else if (tokens.at(1) == "acf/_name") else if (tokens.at(1) == QLatin1String("acf/_name"))
{ {
const QString name(tokens.mid(2).join(' ')); const QString name(line.mid(tokens.at(2).position()));
model.setName(name); model.setName(name);
} }
else if (tokens.at(1) == "acf/_studio") else if (tokens.at(1) == QLatin1String("acf/_studio"))
{ {
const CDistributor dist({}, tokens.mid(2).join(' '), {}, {}, CSimulatorInfo::XPLANE); const CDistributor dist({}, line.mid(tokens.at(2).position()), {}, {}, CSimulatorInfo::XPLANE);
model.setDistributor(dist); model.setDistributor(dist);
} }
} }