Linux系统编程之C++游戏程序优化

豆豆网   技术应用频道   2007年03月10日  【字号: 收藏本文

本文详细介绍Linux系统编程之C++游戏程序优化

  小心在循环中定义复杂变量,如果在循环中按照除非需要否则不构造的原则构造了复杂的对象,那么你在每一次循环的时候都要付出一次构造的代价。最好在循环外构造之以只构造一次。如果一个函数在内循环中被调用,而该函数在栈内构造了一个对象,你可以在外部构造并传递一个应用给它。

  1.1 采用初始化列表

  考虑下面的类:

   class Vehicle
   {
   public
     Vehicle(const std::string &name)
     {
       mName=name
     }
   private:
     std::string mName;
   }

  因为成员变量会在构造函数本体执行前构造,这段代码调用了string mName的构造函数,然后调用了一个=操作符,来拷贝其值。这个例子中的一个典型的不好之处在于string的缺省构造函数会分配内存,但实际上都会分配大大超过实际需要的空间。接下来的代码会好些,并且阻止了对=操作符的调用,进一步的来说,因为给出了更多的信息,非缺省构造函数会更有效,并且编译器可以在构造函数函数体为空的情况下将其优化掉。

   class Vehicle
   {
   public
     Vehicle(const std::string &name):mName(name)
     { }
   private:
     std::string mName;
   }

  1.2 要前自增不要后自增(即要++I不要I++)

  当写x=y++时产生的问题是自增功能将需要制造一个保持y的原值的拷贝,然后y自增,并把原始的值返回。后自增包括了一个临时对象的构造,而前自增则不要。对于整数,这没有额外的负担,但对于用户自定义类型,这就是浪费,你应该在有可能的情况下运用前自增,在循环变量中,你会常遇到这种情形。

作者:yuanyang    责编:豆豆技术应用

正在加载评论...