【发布时间】:2010-06-04 23:48:24
【问题描述】:
“过早优化”这句话似乎是当时的流行语。出于某种原因,尤其是 iphone 程序员似乎将避免过早优化视为一个积极的目标,而不是简单地避免分心的自然结果。问题是,该术语开始越来越多地用于完全不合适的情况。
例如,我看到越来越多的人说不要担心算法的复杂性,因为那是过早的优化(例如Help sorting an NSArray across two properties (with NSSortDescriptor?))。坦率地说,我认为这只是一种懒惰,对有纪律的计算机科学来说是令人震惊的。
但我突然想到,考虑到算法的复杂性和性能可能会采用汇编循环展开以及其他现在被认为不必要的优化技术。
你怎么看?我们现在是否处于在 O(n^n) 和 O(n!) 复杂度算法之间做出决定无关紧要的地步? O(n) vs O(n*n) 怎么样?
您认为什么是“过早的优化”?你有什么实际的规则来有意识或无意识地避免它?
编辑
我知道我的描述有点笼统,但我对具体、实用的规则或人们用来避免“过早优化”的最佳做法感兴趣,尤其是在 iPhone 上平台。
要回答这个问题,您首先需要回答“什么是过早优化?”这个问题。由于该定义显然差异很大,因此任何有意义的答案都需要作者定义该术语。这就是为什么我真的不认为这是一个CW问题。同样,如果人们不同意,我会改变它。
【问题讨论】:
-
声明式编程的某些方面等同于“不用担心算法复杂性”。在商业世界中,过早的优化归结为美元。例如,P * N 必须 > D * R 其中 P 是每次执行代码所增加的生产(或节省)美元; N 是新代码在其生命周期内运行的次数; D 是实施和维护优化所需的开发时间,R 是相应开发人员的工资或小时费率。
标签: iphone algorithm design-patterns