过早优化和过早的悲观化与C++编码标准有关

Nay*_*iya 7 c++ coding-style

Herb Sutter的C++编码标准说要避免Premature optimizationPremature pessimization.但我觉得两者都在做同样的事情.所以期待一些帮助,以澄清这两个概念与它们之间的不同.如果你想出一些例子,那对其他人来说会更有好处. 是一个很好的解释Premature optimization.但我找不到任何东西Premature pessimization

Kon*_*lph 19

我认为,过早的悲观化意味着它与过早优化相反:基本无视使用哪种数据结构和算法.

过早优化通常与算法的细节有关,这些算法可以在以后进行调整,并且在开始时不需要注意.

相比之下,过早的悲观化涉及代码体系结构的高级设计:例如,对于您的库来说,基本上效率低下的接口无法通过优化来解决,因为公共接口几乎是一成不变的.

  • 您是否经常看到人们引用您不应过早优化的想法,并以此为借口编写蹩脚、缓慢的代码?我最近继承了一个项目,其中一些代码需要一分钟多的时间才能完成,然后用一些基本优化替换它,将其运行时间减少到不到一秒。很遗憾,开发人员不知道其中的区别。我一定会把你的答案链接分享给下一个试图以此作为错误编码借口的人。 (2认同)

Ser*_*ins 7

Herb的意思是,当您面对两个同样可读的选项时,请始终选择最有效的选项.

使用std::vector::reserve()或最好的标准容器或算法不是过早优化.但是,不使用它们将是过早的悲观情绪.

过早优化是指为了一些甚至可能不值得的"优化"而牺牲可读性.使用分析器.