[1691] Optimization

Title Text:Premature optimization is the root of all evil, so to start this project I’d better come up with a system that can determine whether a possible optimization is premature or not.<

Origin:https://xkcd.com/1691/

https://www.explainxkcd.com/wiki/index.php/1691:_Optimization

在计算中,优化是使计算机程序尽可能快地工作的实践,通常通过设计它来执行最少的计算。 “过早优化”是在显示需要优化之前尝试优化程序部分的实践。如果程序的某些部分稍后被更改或丢弃,或者优化的代码只是工作量的一小部分,那么优化可能会浪费时间。如果该例程仅占用运行时间的1%,并且可能导致更复杂和更缓慢的代码,那么使例程快10倍并没有多大帮助。

这个漫画是一个流程图,它取笑了过早优化和正确处理之间的区别:它告诉你,如果你用它来决定你是否过早地进行优化,那么你就会过早地进行优化。幽默的结论是,如果对优化是否为时尚有疑问,那么现在还为时过早!

另一层幽默是由流程图的极简主义和直接性提供的,这表明它本身已经(过早地)优化了。

标题文本的所有邪恶的根源是指唐纳德克努特的论文“用Goto语句进行结构化编程”(1974)[1],其中他写道:

“毫无疑问,效率的高低会导致滥用。程序员浪费了大量的时间来思考或担心程序中非关键部分的速度,而这些效率尝试实际上在调试时会产生很大的负面影响。考虑到维护,我们应该忘记效率很低,大约97%的时间都是如此:过早的优化是所有邪恶的根源。但我们不应该把关键的3%的机会放弃。“

通过引入一个程序来确定可能的优化是否为时过早 – 这显然是一个过早的优化,标题文本更进一步提出了优化全新项目的建议。它通过痴迷的完美主义编码人员开发浪费时间的行为,他们开发工具来分析软件的各个方面,例如性能。在某些领域,例如编译器或数据库设计,这些工具可以是有用的和有效的(Knuth提到的3%?),但这里建议的用法更适合本能,常识和对行为的观察。完成的计划。

标题文本也可能在漫画中嘲笑,因为漫画本身可能是用于确定过早优化的“系统”。

流程图经常在xkcd中使用,包括(大部分)非常远的1688:地图年龄指南,在此漫画前一周。低效率(另一个xkcd主题)在此之前的漫画中有特色。

Leave a Reply

Your email address will not be published. Required fields are marked *

Categories