结论
验证本文观点的例子还有很多,本文只是列举了其中两个。如果我们设定了一个最短执行时间的性能要求,如果认为每一个指令在一定时间内被执行,那么具有最少指令的程序无疑将运行最快。可能有多个最优性能的程序和做个接近最优性能的程序。
这些最优性能程序可以完全通过手工编程实现,不过这可能是不现实的;或者通过自动优化技术,诸如优化编译器,来分析程序并产生高效代码。自动优化技术以前主要是分析代码的静态结构,但是现在的Java环境也开始通过在执行的时候收集统计数字来验证动态程序行为,例如使用诸如逃逸分析(escape analysis),然后迅速的动态重新编译执行代码。无论哪一种情况,只有信息在程序中明白的表示出来,或者可以通过对程序行为推理而获得,它们才可以被优化决策过程来使用。某些优化是不可能或不现实能够自动产生的,因为需要使用内容相关的特定知识,这些知识不可能清楚的编写在程序中,不能从程序行为中推理而出。
因此重申一下本文开头的观点:要想真正获得最大性能的程序,除了依靠自动优化技术外,你还有必要在编程的时候使用巧妙的数据结构和针对特定问题而设计的新优化算法。