这里的过度也包括“提早”。
下面的话是Rob Pike,最伟大的C语言大师之一说的,放在这里,已示惊醒:
1.你无法断定程序会在什么地方耗费运行时间。瓶颈经常出现在想不到的地方,所以别急着胡乱找个地方改代码,除非你已经证明那儿就是瓶颈所在;
2.估量。在你没对代码进行估量,特别是没找到最耗时的那部分之前,别去优化速度;
3.花哨的算法在n很小时通常很慢,而n通常很小。花哨算法的常数复杂度很大。除非你确定n总是很大,否则不要使用花哨算法。(即使n很大,也优先考虑原则2)
4.花哨的算法比简单算法更容易出bug,更难实现。尽量使用简单的算法配合简单的数据结构;
5.数据压倒一切。如果已经选择了正确的数据结构并且把一切都组织的井井有条,正确的算法也就不言自明。编程的核心是数据结构,而不是算法。
Ken Thompson对第四条给了更加精辟的补充
——拿不准就穷举。
以上摘自《Unix编程艺术》。从这些简单的文字,我们可以看到当年的大师,尤其是unix程序员对待数据结构,对待算法的态度,同时也能看到他们对待简单与复杂的辩证的视角。这些值得我们自己写程序时好好思考,即使在当今大数据量越来越显重要的情况下。
——你处理的数据量的大小决定了你真正的能力。
两种不同的观点,都对,都要吸收。