首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么时候‘优化代码’‘==’构造数据‘?

什么时候‘优化代码’‘==’构造数据‘?
EN

Software Engineering用户
提问于 2012-10-08 14:35:38
回答 8查看 775关注 0票数 11

ycombinator最近的一篇文章列出了一个具有伟大程序员的原则的评论。

#7.优秀的程序员:我优化了代码。更好的程序员:我构造数据。最好的程序员:有什么区别吗?

承认主观和有争议的概念--是否有人对这意味着什么有立场?我知道,但我想稍后用我的想法编辑这个问题,以免让答案变得容易。

EN

回答 8

Software Engineering用户

回答已采纳

发布于 2012-10-08 14:39:07

十有八九,当您很好地构造代码/模型时,优化将变得非常明显。有多少次你看到了一个马蜂窝,发现它完全不是最优的,当你重组它的时候,大量的冗余变得非常明显。

设计师知道自己已经达到了完美,不是在没有什么可补充的时候,而是在没有什么东西可以带走的时候。-安托万·德圣-埃斯伯里

一个结构良好的系统在本质上将是最小的,并且由于它的最小性质,它将被优化,因为它是多么的少,直接关系到它为实现它的目标所做的事情。

编辑:为了阐明其他人从这一点上拿走的观点,把语句看作是识别代码和数据之间的关系也是完全准确的。这种关系就是这样的:如果您更改了数据的结构,则需要更改代码以尊重已更改的结构。如果希望优化代码,则可能需要更改数据结构,以使代码能够更好地处理数据。

尽管如此,这里还有一种完全不同的可能性,那就是这位与YCombinator有关系的人可能会把代码作为同象性的LISP传统中的数据。在我看来,猜测这是一个很大的意义,但这是YCombinator,所以我不排除这句话只是说LISPers是“最佳程序员”S。

票数 19
EN

Software Engineering用户

发布于 2012-10-08 14:50:46

我认为作者是在暗示数据的任何重组都会导致代码重组。因此,以优化系统为目标的数据重组也会迫使您优化代码,从而引发“有什么不同吗?”回应。

请注意,“超级优秀的程序员”可能会回答“有什么不同吗?”这里还有一些不同之处:一旦您尝试优化以改进CPU缓存的使用,您可能会保持数据结构的布局不变,但是更改访问它们的顺序会产生很大的不同。

票数 4
EN

Software Engineering用户

发布于 2012-10-08 15:05:50

考虑一下最明显的例子--“搜索用户数据太慢了!”

如果您的用户数据没有索引或至少排序,那么重构您的数据将很快产生更高的代码性能。如果数据结构正确,并且只是迭代集合(而不是使用索引或执行二进制搜索),那么修改代码就会产生更高的代码性能。

程序员是问题解决者。虽然区分算法和数据结构是有用的,但它们并不是孤立存在的。最好的程序员知道这一点,不要不必要地孤立自己。

票数 3
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/167964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档