呵呵,说了这么多,到底怎么优化性能还是没有说多少,而且一个产品的代码比这个例子复杂得多,怎么才能优化产品代码呢?
很简单,找到性能瓶颈,而大部分的性能瓶颈都有一个特点:被执行的次数太多。一个耗时2分钟的操作,如果系统运行一天才需要运行一次,那么我们根本就不要去理会它,如果一个操作耗时2秒,但是一般运行一天它要被执行几千亿次,那么你就要小心了。
如何才能知道系统中的哪些代码被执行的次数最多呢?有很多工具可以,有的是挂到系统上一起运行,有的是可以单独运行,但是我推荐的方法就是使用单元测试工具和代码覆盖工具,运行所有的单元测试,查看代码覆盖报告中被执行的次数最多的那些语句,看看他们是否可以被优化,或者可以被减少执行的次数。
可以参考我以前的一些日志:
Ant+JUnit+Cobertura
成功提高20倍性能
很多情况下,找到性能的瓶颈并不是很困难,真正困难的是如何进行优化。这个没有通用的解决方法,只能结合具体的问题具体解决,一个大部分情况下有效的方法是使用某种缓存机制(实际上,我的第二个例子也是使用了缓存机制,把运算结果缓存了9次)。
-
Google面试题解说性能之一:字符串运算VS数字运算
-
Google面试题解说性能之二:分析问题
-
Google面试题解说性能之三:不要小看循环中的任何一个语句
-
Google面试题解说性能之四:优化无止境
-
Google面试题解说性能之五:人比电脑聪明
-
Google面试题解说性能之六:数学显神威
-
Google面试题解说性能之七:缓存中间结果
-
Google面试题解说性能之八:工欲善其事必先利其器
-
Google面试题解说性能之总结
(Visited 352 times, 1 visits today)
2008年1月17日 at 15:27
写的真不错啊. 受益匪浅啊.