]> git.mxchange.org Git - simgear.git/commitdiff
Performance optimization: empty() instead of size()>0
authorTom Paoletti <zommaso@gmail.com>
Fri, 22 Mar 2013 02:27:30 +0000 (19:27 -0700)
committerJames Turner <zakalawe@mac.com>
Fri, 16 Aug 2013 15:48:35 +0000 (16:48 +0100)
empty() is guaranteed to be constant complexity for both vectors and lists, while size() has linear complexity for lists.

12 files changed:
simgear/environment/metar.cxx
simgear/io/sg_binobj.cxx
simgear/misc/sg_path.cxx
simgear/props/tiedpropertylist.hxx
simgear/scene/material/EffectBuilder.hxx
simgear/scene/material/Technique.cxx
simgear/scene/material/mat.cxx
simgear/scene/model/SGText.cxx
simgear/scene/sky/CloudShaderGeometry.cxx
simgear/scene/sky/cloudfield.cxx
simgear/scene/tgdb/apt_signs.cxx
simgear/scene/tgdb/obj.cxx

index 75109b75651d03eb413a08b9975696ec02315384..ec4375ab7e7a0871be877f3e412ba5ed9ceaeb49 100644 (file)
@@ -629,7 +629,7 @@ bool SGMetar::scanWeather()
        weather = pre + weather + post;
        weather.erase(weather.length() - 1);
        _weather.push_back(weather);
-    if( w.phenomena.size() > 0 )
+    if( ! w.phenomena.empty() )
         _weather2.push_back( w );
        _grpcount++;
        return true;
index 994f3dbe643018e016a83768c48343d15a35c0df..704d9e3aa1f791fae300ec8953529ac648d205df 100644 (file)
@@ -934,7 +934,7 @@ bool SGBinObject::write_ascii( const string& base, const string& name,
     fprintf(fp, "\n");
 
     // dump individual triangles if they exist
-    if ( tris_v.size() > 0 ) {
+    if ( ! tris_v.empty() ) {
         fprintf(fp, "# triangle groups\n");
 
         int start = 0;
@@ -982,7 +982,7 @@ bool SGBinObject::write_ascii( const string& base, const string& name,
     }
 
     // dump triangle groups
-    if ( strips_v.size() > 0 ) {
+    if ( ! strips_v.empty() ) {
         fprintf(fp, "# triangle strips\n");
 
         int start = 0;
index 69d1ac4494f73302181f4a0693afb63918d42824..4e11de3c305e4cb3a0c3e45610599fb827aa5e41 100644 (file)
@@ -144,7 +144,7 @@ void SGPath::set_cached(bool cached)
 
 // append another piece to the existing path
 void SGPath::append( const string& p ) {
-    if ( path.size() == 0 ) {
+    if ( path.empty() ) {
         path = p;
     } else {
     if ( p[0] != sgDirPathSep ) {
@@ -173,7 +173,7 @@ void SGPath::add( const string& p ) {
 // concatenate a string to the end of the path without inserting a
 // path separator
 void SGPath::concat( const string& p ) {
-    if ( path.size() == 0 ) {
+    if ( path.empty() ) {
         path = p;
     } else {
         path += p;
@@ -378,7 +378,7 @@ int SGPath::create_dir( mode_t mode ) {
 string_list sgPathBranchSplit( const string &dirpath ) {
     string_list path_elements;
     string element, path = dirpath;
-    while ( path.size() ) {
+    while ( ! path.empty() ) {
         size_t p = path.find( sgDirPathSep );
         if ( p != string::npos ) {
             element = path.substr( 0, p );
@@ -387,7 +387,7 @@ string_list sgPathBranchSplit( const string &dirpath ) {
             element = path;
             path = "";
         }
-        if ( element.size() )
+        if ( ! element.empty() )
             path_elements.push_back( element );
     }
     return path_elements;
index 647b8d5627eca1d216aeeb253b0d7dcb5407541d..39461afd5f836499478f4cd0a8d81cb0b32b3194 100644 (file)
@@ -37,11 +37,11 @@ public:
     virtual ~TiedPropertyList()
     { 
         _root = 0;
-        if (size()>0)
+        if (! empty())
         {
             SG_LOG(SG_GENERAL, SG_ALERT, "Detected properties with dangling ties. Use 'Untie' before removing a TiedPropertyList.");
             // running debug mode: go, fix it!
-            assert(size() == 0);
+            assert(empty());
         }
     }
 
@@ -124,7 +124,7 @@ public:
     }
 
     void Untie() {
-        while( size() > 0 ) {
+        while( ! empty() ) {
             SG_LOG( SG_GENERAL, SG_DEBUG, "untie of " << back()->getPath() );
             back()->untie();
             pop_back();
index 5624aaa2ba03a1ed6b8a4bd53d409cca1558d7ed..06b8ba9f4ab32b054bb9f45583fb16a3c1333e37 100644 (file)
@@ -316,7 +316,7 @@ getVectorProperties(const SGPropertyNode* prop,
     PropertyList useProps = prop->getChildren("use");
     if (useProps.size() == 1) {
         string parentName = useProps[0]->getStringValue();
-        if (parentName.size() == 0 || parentName[0] != '/')
+        if (parentName.empty() || parentName[0] != '/')
             parentName = options->getPropertyNode()->getPath() + "/" + parentName;
         if (parentName[parentName.size() - 1] != '/')
             parentName.append("/");
@@ -331,7 +331,7 @@ getVectorProperties(const SGPropertyNode* prop,
              itr != end;
              ++itr) {
             string childName = (*itr)->getStringValue();
-            if (childName.size() == 0 || childName[0] != '/')
+            if (childName.empty() || childName[0] != '/')
                 result.push_back(parentName + childName);
             else
                 result.push_back(childName);
index a3c5e34e5363efa5f52f47b3d0740cc3f3355813..4caa9d0cd3b91485239b98df54272196c7a6ed07 100644 (file)
@@ -167,12 +167,12 @@ Technique::processDrawables(const EffectGeode::DrawablesIterator& begin,
     BOOST_FOREACH(ref_ptr<Pass>& pass, passes)
     {
         osg::ref_ptr<osg::StateSet> ss = pass;
-        if (ecv && ( pass->getBufferUnitList().size() != 0 || pass->getPositionedUniformMap().size() != 0 ) ) {
+        if (ecv && ( ! pass->getBufferUnitList().empty() || ! pass->getPositionedUniformMap().empty() ) ) {
             ss = static_cast<osg::StateSet*>(
-                pass->clone( osg::CopyOp( ( pass->getBufferUnitList().size() != 0 ?
+                pass->clone( osg::CopyOp( ( ! pass->getBufferUnitList().empty() ?
                                                         osg::CopyOp::DEEP_COPY_TEXTURES :
                                                         osg::CopyOp::SHALLOW_COPY ) |
-                                           ( pass->getPositionedUniformMap().size() != 0 ?
+                                           ( ! pass->getPositionedUniformMap().empty() ?
                                                         osg::CopyOp::DEEP_COPY_UNIFORMS :
                                                         osg::CopyOp::SHALLOW_COPY ) )
                 )
index 65d1401d845c5429664290b28fac9260bd252c3f..46af662b05166a22def634adb0e7a6821684dc20 100644 (file)
@@ -202,7 +202,7 @@ SGMaterial::read_properties(const SGReaderWriterOptions* options,
         }
     }
 
-    if (textures.size() == 0 && texturesets.size() == 0) {
+    if (textures.empty() && texturesets.empty()) {
         SGPath tpath("Textures");
         tpath.append("Terrain");
         tpath.append("unknown.rgb");
@@ -455,7 +455,7 @@ Effect* SGMaterial::get_effect(int i)
 
 Effect* SGMaterial::get_effect(const SGTexturedTriangleBin& triangleBin)
 {
-    if (_status.size() == 0) {
+    if (_status.empty()) {
         SG_LOG( SG_GENERAL, SG_WARN, "No effect available.");
         return 0;
     }
@@ -472,7 +472,7 @@ Effect* SGMaterial::get_effect()
 
 osg::Texture2D* SGMaterial::get_object_mask(const SGTexturedTriangleBin& triangleBin)
 {
-    if (_status.size() == 0) {
+    if (_status.empty()) {
         SG_LOG( SG_GENERAL, SG_WARN, "No mask available.");
         return 0;
     }
index 21638793f8d3c8a821654f1d294a859ac70fe616..747e4098022875bb3d34551a74ee0b54b54ac218 100644 (file)
@@ -45,7 +45,7 @@ public:
     numeric( aNumeric ),
     format( aFormat )
   {
-    if( format.size() == 0 ) {
+    if( format.empty() ) {
       if( numeric ) format = "%f";
       else format = "%s";
     }
index d8f44022da293c9b575a823669a145f5d31a3ba7..3a41ceb69acc34838b0fe499bcb7e4563543283f 100644 (file)
@@ -48,7 +48,7 @@ namespace simgear
 {
 void CloudShaderGeometry::drawImplementation(RenderInfo& renderInfo) const
 {
-    if (!_cloudsprites.size()) return;
+    if (_cloudsprites.empty()) return;
     
     osg::State& state = *renderInfo.getState();
     
index 18c7e8ef1d4ec6c38ead431ceb2585541d974237..45ae15f83c4b4cd9feb71f7d376b28e5578b0d0d 100644 (file)
@@ -395,7 +395,7 @@ bool SGCloudField::repositionCloud(int identifier, float lon, float lat, float a
     }
 
 bool SGCloudField::isDefined3D(void) {
-    return (cloud_hash.size() > 0);
+    return (! cloud_hash.empty());
 }
 
 SGCloudField::CloudFog::CloudFog() {
index ab60c2320ea80eb0f30a14cfc6ed2aaeb288d261..6a3ce73d1cbcad897ee4e58add23ded01c473e7a 100644 (file)
@@ -429,7 +429,7 @@ void AirportSignBuilder::addSign(const SGGeod& pos, double heading, const std::s
             }
         }
 
-        if (newmat.size()) {
+        if (! newmat.empty()) {
             material = d->materials->find(newmat);
             newmat.clear();
         }
index 21427c90b049770da55f775fa6685d1feb768be9..b388d4e7e801aa555d127a253ed37aca950c3048 100644 (file)
@@ -1015,7 +1015,7 @@ SGLoadBTG(const std::string& path, const simgear::SGReaderWriterOptions* options
     randomObjects->setName("Random objects");
   }
 
-  if (tileGeometryBin.randomBuildings.size() > 0) {
+  if (! tileGeometryBin.randomBuildings.empty()) {
     buildingNode = createRandomBuildings(tileGeometryBin.randomBuildings, osg::Matrix::identity(),
                                 options);                                
     buildingNode->setName("Random buildings");
@@ -1025,7 +1025,7 @@ SGLoadBTG(const std::string& path, const simgear::SGReaderWriterOptions* options
     // Now add some random forest.
     tileGeometryBin.computeRandomForest(matlib, vegetation_density);
     
-    if (tileGeometryBin.randomForest.size() > 0) {
+    if (! tileGeometryBin.randomForest.empty()) {
       forestNode = createForest(tileGeometryBin.randomForest, osg::Matrix::identity(),
                                 options);
       forestNode->setName("Random trees");