From fbc9c37646652d2846bc58239e21708e015e9872 Mon Sep 17 00:00:00 2001 From: Mathew Sutcliffe Date: Wed, 26 Apr 2017 22:52:25 +0100 Subject: [PATCH] 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 --- .../xplane/aircraftmodelloaderxplane.cpp | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/blackmisc/simulation/xplane/aircraftmodelloaderxplane.cpp b/src/blackmisc/simulation/xplane/aircraftmodelloaderxplane.cpp index 85554521f..ee805278e 100644 --- a/src/blackmisc/simulation/xplane/aircraftmodelloaderxplane.cpp +++ b/src/blackmisc/simulation/xplane/aircraftmodelloaderxplane.cpp @@ -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 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); } }