【转】编程之道 之 Rob Pike

1.你无法断定程序会在什么地方耗费运行时间。瓶颈经常出现在想不到的地方,所以别急于胡乱找个地方改代码,除非你已经证实那儿就是瓶颈所在。

2.估量。在你没对代码进行估量,特别是没找到最耗时的那部分之前,别去优化速度。

3.花哨的算法在n很小时通常很慢,而n通常很小。花哨算法的常数复杂度很大。除非你确定n总是很大,否则不要用花哨算法(即使n很大,也优先考虑原则2)。比如,解决常见问题时,最简单的树——二叉树(binarytree),总是比那些复杂的树(AVL树,伸展树(splaytree)和红黑树、B-树(B-tree),多叉树(trie))来的高校。

4.花哨的算法比简单算法更容易出bug、更难实现。尽量使用简单的算法配合简单的数据结构。只要掌握了数据结构中的四大法宝,就可以包打天下,他们是:array、linkedlist、hashtable、binarytree。这四大法宝可不是各自为战的,灵活结合才能游刃有余。比如,一个用hashtable组织的symboltable,其中是一个个由字符型array构成的linkedlist。

5.以数据为中心。如果已经选择了正确的数据结构并且把一切都组织得井井有条,正确的算法也就不言自明。编程的核心是数据结构,而不是算法。

6.没有原则6。

KenThompson——Unix最初版本的设计者和实现者,禅宗偈语般地对Pike的原则4作了强调:拿不准就穷举

posted @ 2013-11-30 14:00  visionwang  阅读(247)  评论(0编辑  收藏  举报