谁能给我推荐一篇文章,或者在这里写一些关于C++编程习惯的技巧,这些习惯通常是有效的(没有真正的缺点),并提高了性能?我不是指编程模式和算法复杂性--我需要一些小事情,比如你如何定义你的函数,在循环中做什么/避免什么,在堆栈上分配什么,在堆上分配什么,等等。
它不是关于让特定的软件更快,也不是关于如何创建一个干净的软件设计,而是关于编程习惯-如果你总是应用它们,你会让你的代码变得更快,而不是稍微慢一点。
发布于 2010-01-09 03:47:10
Effective C++、More Effective C++、Effective STL和C++ Coding Standards中的许多技巧都是这样的。
此类技巧的一个简单示例:尽可能使用前置增量(++i)而不是后置增量(i++)。这对于迭代器尤其重要,因为后增量涉及复制迭代器。您的优化器可能能够撤销这一点,但是编写预增量并不是任何额外的工作,所以为什么要冒这个风险呢?
发布于 2010-01-09 03:48:51
如果我理解正确的话,您问的是关于避免过早优化的问题,这是对避免过早优化的一个很好的补充。根据我的经验,要避免的第一件事就是尽可能不复制大对象。这包括:
通过(const)引用传递对象到functions
最后这一点需要一些解释。我都说不清我见过多少次了:
class Foo
{
const BigObject & bar();
};
// ... somewhere in code ...
BigObject obj = foo.bar(); // OOPS! This creates a copy!正确的方法是:
const BigOject &obj = foo.bar(); // does not create a copy这些准则适用于任何比智能指针或内置类型更大的对象。此外,我强烈建议花时间学习profile your code。一个好的分析工具将有助于捕获浪费的操作。
发布于 2010-01-09 04:10:55
下面是我最恼火的几点:
if (a && b),如果b更有可能为false,则将其放在第一位以保存对a的评估。还有许多我不会提及的“坏习惯”,因为在实践中,现代编译器/优化器将消除这些不良影响(例如,返回值优化与按引用传递、循环展开等)。
https://stackoverflow.com/questions/2030189
复制相似问题