个人原创,转载请注明出处,谢谢!
一、目的
使用各种方法对性能进行改善。这里只简单列出书内的一些性能优化方法和结果。
更多请参考:
http://blog.csdn.net/lijian818181/archive/2009/09/25/4593320.aspx
二、一个优化案例的结论
一个天体物理学研究方面的程序不断优化的结论(更多还请参考原著p58):
大家可以以此作为优化程序的参考:
(1) 优化的顺序;
(2) 优化的着眼点。
三、对软件设计层次的启发
1问题定义
问题说明和效率具有微秒的交互作用。良好的说明有时会很好的提供用户认为是必要的东西。
2 系统结构
将大系统分解为模块可能是确定性能时最重要的单个因素。为整个系统提出一个骨架以后,设计者应该做一个封底运算以确满足性能需求。
3 算法和数据结构
构建快速模块的关键通常是数据结构,这些结构表示了数据,以及作用于数据的算法。
4 代码优化
5 系统软件
有时更改系统所依赖的软件比更改系统本身更简单。比如更换数据库,编译器等。
6 硬件
运行速度更快的硬件可以提高性能。
最后,请谨记Gardon Bell的话:
计算机系统最便宜、最快速、最可靠的部件就是那些不在那儿的部件。
四、 封底计算
4.1 密西西比河一天的流量
密西西比河一天的流量?
(1) 在靠近河口的地方大约有1英里宽,20英尺深(1/250英里);
(2) 水流速度大约5英里/小时(120英里/天);
一天的流量 = 1英里 * (1 / 250) 英里 * 120 英里/天 = 0.5立方英里/天
我们可以用类似的方法来估算系统的时间,以粗略的测量其性能。
一个建筑大桥的工程师的经验:
要用安全系数来补偿我们对某方面的无知,例如进行可靠性/可用性承诺时,我们要对我们能满足的目标有一个10的系数,以补偿我们的无知。在规模,成本,进度等方面,我们要保留一个2或4的系数,以弥补我们在某个方面的缺漏。
4.2 利特尔法则
利特尔法则:
系统中物体的平均数量就是系统中物体离开系统的平均比率和每个物体在系统中所花费的平均时间的乘积。
比如一个地方可以容纳60个人,平均每个进去的人会呆上3个小时,所以进入率大约就是每小时20个人,如果你在外面排队,你前面要是还有20个人,那你还要等1个小时才能进入。
4.3 原则
当使用封底计算时,一定要回忆一下爱因期坦的名言:
任何事都应该做到尽可能的简单,除非没有更简单的了。