预计阅读本页时间:-
13.4.2 什么应该优化
作为一般的规则,系统的第一版应该尽可能简单明了。惟一的优化应该是那些显而易见要成为不可避免的问题的事情。为文件系统提供块高速缓存就是这样的一个例子。一旦系统引导起来并运行,就应该仔细地测量以了解时间真正花在了什么地方。基于这些数字,应该在最有帮助的地方做出优化。
这里有一个关于优化不但不好反而更坏的真实故事。作者的一名学生编写了MINIX的mkfs程序。该程序在一个新格式化的磁盘上布下一个新的文件系统。这名学生花了大约6个月的时间对其进行优化,包括放入磁盘高速缓存。当他上交该程序时,它不能工作,需要另外几个月进行调试。在计算机的生命周期中,当系统安装时,该程序典型地在硬盘上运行一次。它还对每块做格式化的软盘运行一次。每次运行大约耗时2秒。即使未优化的版本耗时1分钟,花费如此多的时间优化一个很少使用的程序也是相当不值的。
对于性能优化,一条相当适用的口号是:
广告:个人专属 VPN,独立 IP,无限流量,多机房切换,还可以屏蔽广告和恶意软件,每月最低仅 5 美元
足够好就够好了。
通过这条口号我们要表达的意思是:性能一旦达到一个合理的水平,榨出最后一点百分比的努力和复杂性或许并不值得。如果调度算法相当公平并且在90%的时间保持CPU忙碌,它就尽到了自己的职责。发明一个改进了5%但是要复杂得多的算法或许是一个坏主意。类似地,如果缺页率足够低到不是瓶颈,克服重重难关以获得优化的性能通常并不值得。避免灾难比获得优化的性能要重要得多,特别是针对一种负载的优化对于另一种负载可能并非优化的情况。