对于如何判断一个系统的不合理,这里有两个基本的原则:
下面的所有方法都是基于这两项的。
有人会认为本页花了大量的篇幅去讲如何进行“初步优化”( premature optimization)。虽然有时候微观优化对开发高效的数据结构和算法很困难,但是在嵌入式手持设备上面你毫无选择。例如,如果把桌面电脑的虚拟机移植到你的Android系统中,你会发现你写的程序会耗尽你的内存。这就会导致程序运行起来极度缓慢,即使不考虑它对系统上其他的运行程序的影响。
这就是为什么上面两条原则这么重要。Android的成功在于开发程序提供给用户的体验,然而用户体验的好坏又决定于你的代码是否能及时的响应而不至于慢的让人崩溃。因为我们所有的程序都会在同一个设备上面运行,所以我们把它们作为一个整体来考虑。本文就像你考驾照需要学习的交通规则一样:如果所有人遵守,事情就会很流畅;但当你不遵守时,你就会撞车。
在我们讨论实质问题之前,有一个简要的说明:无论虚拟机是否是Java编译器的一个特点,下面介绍的所有观点都是正确的。如果我们有两种方法完成同样的事情,但是foo()的解释执行要快于bar(),那么foo()的编译速度一定不会比bar()慢,仅仅靠编译器使你的代码运行速度提升是不明智的做法。