3.为vector预留内存
如果你知道std::vector中大概需要多少元素,提前预留内存可以通过减少重新分配内存的次数来节省时间。
不要这样做:
std::vector<int> data;for (int i = 0; i < n; ++i) { data.push_back(i);}试试这样:
std::vector<int> data;data.reserve(n);for (int i = 0; i < n; ++i) { data.push_back(i);}
4.优先使用前缀自增而非后缀自增 当使用迭代器或简单的计数器时,使用前缀自增(++i)可能会比后缀自增(i++)稍微更高效一些,特别是对于复杂的迭代器类型来说。
不要这样做:
for (auto it = container.begin(); it!= container.end(); it++) { // 执行某些操作}试试这样:
for (auto it = container.begin(); it!= container.end(); ++it) { // 执行某些操作}这可能看起来有点吹毛求疵,但在紧密的循环中,每一微秒都很重要。
5.在不必要时避免使用虚函数 虚函数会因动态分派而增加开销。如果你不需要多态行为,就别用virtual关键字了。
不要这样做:
class Base {public: virtual void doSomething();};试试这样:
class Base {public: void doSomething();};我曾经把我所有类的方法都加上virtual关键字“以防万一”——大错特错啊。我的程序性能一落千丈。