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())
{
QString line = ts.readLine();
QStringList tokens = line.split(' ', QString::SkipEmptyParts);
if (tokens.at(0) != "P" || tokens.size() < 3) { continue; }
if (tokens.at(1) == "acf/_ICAO")
const QString line = ts.readLine();
QVector<QStringRef> tokens = line.splitRef(' ', QString::SkipEmptyParts);
if (tokens.at(0) != QLatin1String("P") || tokens.size() < 3) { continue; }
if (tokens.at(1) == QLatin1String("acf/_ICAO"))
{
const CAircraftIcaoCode icao(tokens.at(2));
const CAircraftIcaoCode icao(tokens.at(2).toString());
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);
}
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);
}
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);
}
}