9
如何处理关于“过早优化是万恶之源”的误解?
我遇到了很多人,他们在原则上反对任何在英语中通常被认为是“优化”的东西,他们经常逐字引用(部分)引用“过早的优化是万恶之源”。作为他们立场的理由,暗示他们将我所说的一切解释为“过早的优化”。但是,这些视图有时是如此可笑地根深蒂固,以至于它们几乎消除了任何与最纯粹的“天真的”实现方式有关的算法或数据结构偏差……或者至少与它们之前的工作方式无关。在听到“性能”或“优化”的消息后,人们如何才能像这样使人们再次“张开耳朵”?我该如何讨论对性能有影响的设计/实现主题,而又不会让人立即想到:“这个人想花两周时间来编写十行代码?” 现在,在这里以及在Web的其他角落已经讨论了 “是否所有优化都是过早的并因此有害的”的立场,并且已经讨论了如何识别优化何时过早并因此有害的立场,但是不幸的是,现实世界中仍有一些人不愿意挑战自己对反优化的信念。 以前的尝试 几次,我试图提供Donald Knuth的完整报价,以解释“过早的优化是不好的”↛“所有的优化都是不好的”: 我们应该忘记效率低下的问题,例如大约97%的时间:过早的优化是万恶之源。然而,我们不应放弃我们那临界的3%的机会。 但是,在提供完整报价时,这些人有时有时会变得更加确信我在做的是Premature Optimization™,并深入研究并拒绝听。好像“优化”一词使他们感到害怕:在某些情况下,我能够通过避免使用“优化(e | ation)”一词来提出实际的性能改进代码更改,而不会被否决。和“性能”(这个词也很吓人),而是使用“替代架构”或“改进的实现”之类的表达方式。因此,这似乎真的是教条主义,而不是他们实际上是对我的批评进行评估,然后视其为不必要和/或过于昂贵而将其驳回。