Skip to content

Commit 148380a

Browse files
committedNov 26, 2017
Fix inefficient QString splitting
QString::split with single characters is about 10x faster than QString::split using QStrings
1 parent 144e9a2 commit 148380a

22 files changed

+39
-39
lines changed
 

‎src/app/qgsoptions.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2346,11 +2346,11 @@ void QgsOptions::addScaleToScaleList( QListWidgetItem *newItem )
23462346
QListWidgetItem *duplicateItem = mListGlobalScales->findItems( newItem->text(), Qt::MatchExactly ).value( 0 );
23472347
delete duplicateItem;
23482348

2349-
int newDenominator = newItem->text().split( QStringLiteral( ":" ) ).value( 1 ).toInt();
2349+
int newDenominator = newItem->text().split( ':' ).value( 1 ).toInt();
23502350
int i;
23512351
for ( i = 0; i < mListGlobalScales->count(); i++ )
23522352
{
2353-
int denominator = mListGlobalScales->item( i )->text().split( QStringLiteral( ":" ) ).value( 1 ).toInt();
2353+
int denominator = mListGlobalScales->item( i )->text().split( ':' ).value( 1 ).toInt();
23542354
if ( newDenominator > denominator )
23552355
break;
23562356
}

‎src/app/qgsprojectproperties.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1992,11 +1992,11 @@ void QgsProjectProperties::addScaleToScaleList( QListWidgetItem *newItem )
19921992
QListWidgetItem *duplicateItem = lstScales->findItems( newItem->text(), Qt::MatchExactly ).value( 0 );
19931993
delete duplicateItem;
19941994

1995-
int newDenominator = newItem->text().split( QStringLiteral( ":" ) ).value( 1 ).toInt();
1995+
int newDenominator = newItem->text().split( ':' ).value( 1 ).toInt();
19961996
int i;
19971997
for ( i = 0; i < lstScales->count(); i++ )
19981998
{
1999-
int denominator = lstScales->item( i )->text().split( QStringLiteral( ":" ) ).value( 1 ).toInt();
1999+
int denominator = lstScales->item( i )->text().split( ':' ).value( 1 ).toInt();
20002000
if ( newDenominator > denominator )
20012001
break;
20022002
}

‎src/app/qgsversionmigration.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ QgsError Qgs2To3Migration::migrateSettings()
201201
if ( line.isEmpty() )
202202
continue;
203203

204-
QStringList parts = line.split( ";" );
204+
const QStringList parts = line.split( ';' );
205205

206206
Q_ASSERT_X( parts.count() == 2, "QgsVersionMigration::migrateSettings()", "Can't split line in 2 parts." );
207207

@@ -327,10 +327,10 @@ QPair<QString, QString> Qgs2To3Migration::transformKey( QString fullOldKey, QStr
327327

328328
if ( newKeyPart.endsWith( "/*" ) )
329329
{
330-
QStringList newKeyparts = newKeyPart.split( "/" );
330+
QStringList newKeyparts = newKeyPart.split( '/' );
331331
// Throw away the *
332332
newKeyparts.removeLast();
333-
QStringList oldKeyParts = fullOldKey.split( "/" );
333+
QStringList oldKeyParts = fullOldKey.split( '/' );
334334
for ( int i = 0; i < newKeyparts.count(); ++i )
335335
{
336336
oldKeyParts.replace( i, newKeyparts.at( i ) );

‎src/gui/qgsmetadatawidget.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -715,7 +715,7 @@ void QgsMetadataWidget::updatePanel() const
715715
if ( !categories.isEmpty() )
716716
{
717717
int row = categories.at( 0 )->row();
718-
mCategoriesModel->setStringList( tabKeywords->item( row, 1 )->text().split( QStringLiteral( "," ) ) );
718+
mCategoriesModel->setStringList( tabKeywords->item( row, 1 )->text().split( ',' ) );
719719
}
720720
else
721721
{

‎src/plugins/grass/qgsgrassmapcalc.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -512,7 +512,7 @@ QStringList QgsGrassMapcalc::checkRegion()
512512

513513
struct Cell_head window;
514514

515-
QStringList mm = obj->value().split( QStringLiteral( "@" ) );
515+
QStringList mm = obj->value().split( '@' );
516516
if ( mm.size() < 1 )
517517
continue;
518518

@@ -571,7 +571,7 @@ bool QgsGrassMapcalc::inputRegion( struct Cell_head *window, QgsCoordinateRefere
571571

572572
struct Cell_head mapWindow;
573573

574-
QStringList mm = obj->value().split( QStringLiteral( "@" ) );
574+
QStringList mm = obj->value().split( '@' );
575575
if ( mm.size() < 1 )
576576
continue;
577577

@@ -652,7 +652,7 @@ void QgsGrassMapcalc::setOption()
652652
{
653653
case QgsGrassMapcalcObject::Map :
654654
{
655-
QStringList mapMapset = mObject->value().split( QStringLiteral( "@" ) );
655+
QStringList mapMapset = mObject->value().split( '@' );
656656
if ( !mMapComboBox->setCurrent( mapMapset.value( 0 ), mapMapset.value( 1 ) ) )
657657
{
658658
mMapComboBox->setEditText( mObject->value() );

‎src/plugins/grass/qgsgrassmodule.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -672,7 +672,7 @@ void QgsGrassModule::run()
672672
}
673673
else // option
674674
{
675-
QStringList opt = arg.split( "=" );
675+
QStringList opt = arg.split( '=' );
676676
//env = "GIS_OPT_" + opt.takeFirst().toUpper();
677677
//env += "=" + opt.join( "=" ); // rejoin rest
678678
environment.insert( "GIS_OPT_" + opt.takeFirst().toUpper(), opt.join( "=" ) );

‎src/plugins/grass/qgsgrassmoduleinput.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -858,7 +858,7 @@ QgsGrassModuleInput::QgsGrassModuleInput( QgsGrassModule *module,
858858
{
859859
int mask = 0;
860860

861-
Q_FOREACH ( const QString &typeName, opt.split( "," ) )
861+
Q_FOREACH ( const QString &typeName, opt.split( ',' ) )
862862
{
863863
mask |= QgsGrass::vectorType( typeName );
864864
}

‎src/plugins/grass/qgsgrassmoduleoptions.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -845,7 +845,7 @@ bool QgsGrassModuleStandardOptions::getCurrentMapRegion( QgsGrassModuleInput *in
845845
return false;
846846
}
847847

848-
QStringList mm = input->currentMap().split( QStringLiteral( "@" ) );
848+
QStringList mm = input->currentMap().split( '@' );
849849
QString map = mm.value( 0 );
850850
QString mapset = QgsGrass::getDefaultMapset();
851851
if ( mm.size() > 1 )

‎src/plugins/grass/qgsgrassmoduleparam.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -436,7 +436,7 @@ QgsGrassModuleOption::QgsGrassModuleOption( QgsGrassModule *module, QString key,
436436
{
437437
QDomElement e = n.toElement();
438438
QString val = e.text().trimmed();
439-
minMax = val.split( QStringLiteral( "-" ) );
439+
minMax = val.split( '-' );
440440
if ( minMax.size() == 2 )
441441
{
442442
mHaveLimits = true;
@@ -902,7 +902,7 @@ void QgsGrassModuleGdalInput::updateQgisLayers()
902902
}
903903
else if ( vector->providerType() == QLatin1String( "ogr" ) )
904904
{
905-
QStringList items = provider->dataSourceUri().split( QStringLiteral( "|" ) );
905+
QStringList items = provider->dataSourceUri().split( '|' );
906906

907907
if ( items.size() > 1 )
908908
{
@@ -913,7 +913,7 @@ void QgsGrassModuleGdalInput::updateQgisLayers()
913913

914914
for ( int i = 1; i < items.size(); i++ )
915915
{
916-
QStringList args = items[i].split( QStringLiteral( "=" ) );
916+
QStringList args = items[i].split( '=' );
917917

918918
if ( args.size() != 2 )
919919
continue;
@@ -1219,7 +1219,7 @@ void QgsGrassModuleSelection::onLayerChanged()
12191219
{
12201220
QString uri = vectorLayer->dataProvider()->dataSourceUri();
12211221
QgsDebugMsg( "uri = " + uri );
1222-
QString layerCode = uri.split( QStringLiteral( "/" ) ).last();
1222+
QString layerCode = uri.split( '/' ).last();
12231223
if ( mLayerInput->currentLayerCodes().contains( layerCode ) )
12241224
{
12251225
// Qt::UserRole+1 may be also uri (AddLayer) but hardly matching layer id
@@ -1464,7 +1464,7 @@ void QgsGrassModuleFile::browse()
14641464

14651465
if ( mType == Multiple )
14661466
{
1467-
QString path = mLineEdit->text().split( QStringLiteral( "," ) ).first();
1467+
QString path = mLineEdit->text().split( ',' ).first();
14681468
if ( path.isEmpty() )
14691469
path = lastDir;
14701470
else

‎src/providers/arcgisrest/qgsafsprovider.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ QgsAfsProvider::QgsAfsProvider( const QString &uri )
5959
mLayerDescription = layerData[QStringLiteral( "description" )].toString();
6060

6161
// Set extent
62-
QStringList coords = mSharedData->mDataSource.param( QStringLiteral( "bbox" ) ).split( QStringLiteral( "," ) );
62+
QStringList coords = mSharedData->mDataSource.param( QStringLiteral( "bbox" ) ).split( ',' );
6363
if ( coords.size() == 4 )
6464
{
6565
bool xminOk = false, yminOk = false, xmaxOk = false, ymaxOk = false;

‎src/providers/arcgisrest/qgsamsdataitems.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ QVector<QgsDataItem *> QgsAmsConnectionItem::createChildren()
103103
QString format = QStringLiteral( "jpg" );
104104
bool found = false;
105105
QList<QByteArray> supportedFormats = QImageReader::supportedImageFormats();
106-
foreach ( const QString &encoding, serviceData["supportedImageFormatTypes"].toString().split( "," ) )
106+
foreach ( const QString &encoding, serviceData["supportedImageFormatTypes"].toString().split( ',' ) )
107107
{
108108
foreach ( const QByteArray &fmt, supportedFormats )
109109
{

‎src/providers/arcgisrest/qgsamssourceselect.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ bool QgsAmsSourceSelect::connectToService( const QgsOwsConnection &connection )
4444
return false;
4545
}
4646

47-
populateImageEncodings( serviceInfoMap[QStringLiteral( "supportedImageFormatTypes" )].toString().split( QStringLiteral( "," ) ) );
47+
populateImageEncodings( serviceInfoMap[QStringLiteral( "supportedImageFormatTypes" )].toString().split( ',' ) );
4848

4949
QStringList layerErrors;
5050
foreach ( const QVariant &layerInfo, serviceInfoMap["layers"].toList() )

‎src/providers/arcgisrest/qgsarcgisrestutils.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -388,7 +388,7 @@ QVariantMap QgsArcGisRestUtils::getObjects( const QString &layerurl, const QList
388388
QUrl queryUrl( layerurl + "/query" );
389389
queryUrl.addQueryItem( QStringLiteral( "f" ), QStringLiteral( "json" ) );
390390
queryUrl.addQueryItem( QStringLiteral( "objectIds" ), ids.join( QStringLiteral( "," ) ) );
391-
QString wkid = crs.indexOf( QLatin1String( ":" ) ) >= 0 ? crs.split( QStringLiteral( ":" ) )[1] : QLatin1String( "" );
391+
QString wkid = crs.indexOf( QLatin1String( ":" ) ) >= 0 ? crs.split( ':' )[1] : QLatin1String( "" );
392392
queryUrl.addQueryItem( QStringLiteral( "inSR" ), wkid );
393393
queryUrl.addQueryItem( QStringLiteral( "outSR" ), wkid );
394394
QString outFields = fetchAttributes.join( QStringLiteral( "," ) );

‎src/providers/grass/qgsgrass.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1515,7 +1515,7 @@ QStringList QgsGrass::grassObjects( const QgsGrassObject &mapsetObject, QgsGrass
15151515
fullName = fullName.trimmed();
15161516
if ( !fullName.isEmpty() )
15171517
{
1518-
QStringList nameMapset = fullName.split( QStringLiteral( "@" ) );
1518+
QStringList nameMapset = fullName.split( '@' );
15191519
if ( nameMapset.value( 1 ) == mapsetObject.mapset() || nameMapset.value( 1 ).isEmpty() )
15201520
{
15211521
list << nameMapset.value( 0 );
@@ -2133,7 +2133,7 @@ QgsRectangle QgsGrass::extent( const QString &gisdbase, const QString &location,
21332133
try
21342134
{
21352135
QString str = getInfo( QStringLiteral( "window" ), gisdbase, location, mapset, map, type );
2136-
QStringList list = str.split( QStringLiteral( "," ) );
2136+
QStringList list = str.split( ',' );
21372137
if ( list.size() != 4 )
21382138
{
21392139
throw QgsGrass::Exception( "Cannot parse GRASS map extent: " + str );
@@ -2157,7 +2157,7 @@ void QgsGrass::size( const QString &gisdbase, const QString &location, const QSt
21572157
try
21582158
{
21592159
QString str = getInfo( QStringLiteral( "size" ), gisdbase, location, mapset, map, QgsGrassObject::Raster );
2160-
QStringList list = str.split( QStringLiteral( "," ) );
2160+
QStringList list = str.split( ',' );
21612161
if ( list.size() != 2 )
21622162
{
21632163
throw QgsGrass::Exception( "Cannot parse GRASS map size: " + str );
@@ -2250,7 +2250,7 @@ QMap<QString, QString> QgsGrass::query( const QString &gisdbase, const QString &
22502250
try
22512251
{
22522252
QString str = getInfo( QStringLiteral( "query" ), gisdbase, location, mapset, map, type, x, y );
2253-
QStringList list = str.trimmed().split( QStringLiteral( ":" ) );
2253+
QStringList list = str.trimmed().split( ':' );
22542254
if ( list.size() == 2 )
22552255
{
22562256
result[list[0]] = list[1];

‎src/providers/grass/qgsgrassprovidermodule.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -559,8 +559,8 @@ QVector<QgsDataItem *> QgsGrassMapsetItem::createChildren()
559559
// somewhere not properly escaped (there was bug in QgsMimeDataUtils for example)
560560
QString uri = mDirPath + "/" + name + "/" + layerName;
561561
QgsLayerItem::LayerType layerType = QgsLayerItem::Vector;
562-
QString typeName = layerName.split( QStringLiteral( "_" ) ).value( 1 );
563-
QString baseLayerName = layerName.split( QStringLiteral( "_" ) ).value( 0 );
562+
QString typeName = layerName.split( '_' ).value( 1 );
563+
QString baseLayerName = layerName.split( '_' ).value( 0 );
564564

565565
if ( typeName == QLatin1String( "point" ) || typeName == QLatin1String( "node" ) )
566566
layerType = QgsLayerItem::Point;

‎src/providers/grass/qgsgrassrasterprovider.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -675,7 +675,7 @@ double QgsGrassRasterValue::value( double x, double y, bool *ok )
675675

676676
// TODO: use doubles instead of strings
677677

678-
QStringList list = str.trimmed().split( QStringLiteral( ":" ) );
678+
QStringList list = str.trimmed().split( ':' );
679679
if ( list.size() == 2 )
680680
{
681681
if ( list[1] == QLatin1String( "error" ) ) return value;

‎src/providers/wfs/qgswfsprovider.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,7 @@ bool QgsWFSProvider::processSQL( const QString &sqlString, QString &errorMsg, QS
285285
if ( sql.hasParserError() )
286286
{
287287
QString parserErrorString( sql.parserErrorString() );
288-
QStringList parts( parserErrorString.split( QStringLiteral( "," ) ) );
288+
QStringList parts( parserErrorString.split( ',' ) );
289289
parserErrorString.clear();
290290
Q_FOREACH ( const QString &part, parts )
291291
{

‎src/server/services/wfs/qgswfsparameters.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -383,7 +383,7 @@ namespace QgsWfs
383383

384384
if ( !bbox.isEmpty() )
385385
{
386-
QStringList corners = bbox.split( "," );
386+
const QStringList corners = bbox.split( ',' );
387387

388388
if ( corners.size() == 4 )
389389
{

‎src/server/services/wfs/qgswfstransaction.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -933,7 +933,7 @@ namespace QgsWfs
933933
}
934934

935935
// get bbox corners
936-
QStringList corners = bbox.split( "," );
936+
const QStringList corners = bbox.split( ',' );
937937
if ( corners.size() != 4 )
938938
{
939939
throw QgsRequestNotWellFormedException( QStringLiteral( "BBOX has to be composed of 4 elements: '%1'" ).arg( bbox ) );

‎src/server/services/wfs/qgswfstransaction_1_0_0.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -916,7 +916,7 @@ namespace QgsWfs
916916
}
917917

918918
// get bbox corners
919-
QStringList corners = bbox.split( "," );
919+
const QStringList corners = bbox.split( ',' );
920920
if ( corners.size() != 4 )
921921
{
922922
throw QgsRequestNotWellFormedException( QStringLiteral( "BBOX has to be composed of 4 elements: '%1'" ).arg( bbox ) );

‎src/server/services/wms/qgswmsparameters.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -882,7 +882,7 @@ namespace QgsWms
882882

883883
if ( !bbox.isEmpty() )
884884
{
885-
QStringList corners = bbox.split( "," );
885+
QStringList corners = bbox.split( ',' );
886886

887887
if ( corners.size() == 4 )
888888
{
@@ -1670,7 +1670,7 @@ namespace QgsWms
16701670
QMultiMap<QString, QString> layerFilters;
16711671
Q_FOREACH ( QString f, filter )
16721672
{
1673-
QStringList splits = f.split( ":" );
1673+
const QStringList splits = f.split( ':' );
16741674
if ( splits.size() == 2 )
16751675
{
16761676
layerFilters.insert( splits[0], splits[1] );
@@ -1687,7 +1687,7 @@ namespace QgsWms
16871687
QMultiMap<QString, QString> layerSelections;
16881688
Q_FOREACH ( QString s, selection )
16891689
{
1690-
QStringList splits = s.split( ":" );
1690+
const QStringList splits = s.split( ':' );
16911691
if ( splits.size() == 2 )
16921692
{
16931693
layerSelections.insert( splits[0], splits[1] );
@@ -1728,7 +1728,7 @@ namespace QgsWms
17281728
it = layerSelections.find( layer );
17291729
while ( it != layerSelections.end() && it.key() == layer )
17301730
{
1731-
param.mSelection << it.value().split( "," );
1731+
param.mSelection << it.value().split( ',' );
17321732
++it;
17331733
}
17341734
}

‎tests/src/core/testqgsmaprendererjob.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,7 @@ void TestQgsMapRendererJob::testFourAdjacentTiles()
294294
QgsMapSettings mapSettings;
295295

296296
//extent
297-
QStringList rectCoords = bboxList.at( i ).split( QStringLiteral( "," ) );
297+
QStringList rectCoords = bboxList.at( i ).split( ',' );
298298
if ( rectCoords.size() != 4 )
299299
{
300300
QFAIL( "bbox string invalid" );

0 commit comments

Comments
 (0)
Please sign in to comment.