From kde-commits Sat Apr 30 21:42:49 2011 From: =?utf-8?q?Dennis_Nienh=C3=BCser?= Date: Sat, 30 Apr 2011 21:42:49 +0000 To: kde-commits Subject: =?utf-8?q?=5Bmarble=5D_src/lib/geodata/handlers/kml=3A_Faster_KM?= Message-Id: <20110430214249.7FEEDA60A4 () git ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=130419980025508 Git commit 995b06039a00f9a7d45e32cec0aa5a581578e610 by Dennis Nienhüser. Committed on 25/04/2011 at 00:11. Pushed by nienhueser into branch 'master'. Faster KML coordinate tag parsing. Speeds up parsing of large routes by a factor of two. REVIEW: 101227 M +18 -1 src/lib/geodata/handlers/kml/KmlCoordinatesTagHandler.cpp http://commits.kde.org/marble/995b06039a00f9a7d45e32cec0aa5a581578e610 diff --git a/src/lib/geodata/handlers/kml/KmlCoordinatesTagHandler.cpp b/src/lib/geodata/handlers/kml/KmlCoordinatesTagHandler.cpp index ad1fed2..25cfadf 100644 --- a/src/lib/geodata/handlers/kml/KmlCoordinatesTagHandler.cpp +++ b/src/lib/geodata/handlers/kml/KmlCoordinatesTagHandler.cpp @@ -50,7 +50,24 @@ GeoNode* KmlcoordinatesTagHandler::parse( GeoParser& parser ) const || parentItem.represents( kmlTag_LineString ) || parentItem.represents( kmlTag_MultiGeometry ) || parentItem.represents( kmlTag_LinearRing ) ) { - QStringList coordinatesLines = parser.readElementText().trimmed().split( QRegExp("\\s"), QString::SkipEmptyParts ); + QStringList coordinatesLines;// = parser.readElementText().trimmed().split( QRegExp("\\s"), QString::SkipEmptyParts ); + // Splitting using the "\\s" regexp is slow, split manually instead. + QString const text = parser.readElementText().trimmed(); + int index = 0; + bool inside = true; + int const size = text.size(); + for ( int i=0; i() ) {