您的 JIT 会做这种转换吗? 因此,如清单 3 中的示例所示,我们不能期望静态编译器会在保持语言语义的同时对 Java 代码执行尾递归转换。相反地,我们必须依靠 JIT 进行的动态编译。JIT 会不会做这种转换是取决于 JVM。 public class TailRecursionTest { 我们来考虑一下这个类的 loop 方法。这个方法只是尽可能长时间地对自身作递归调用。因为它永远不会返回,也不会以任何方式影响任何外部变量,因此如清单 5 所示替换其代码正文将保留程序的语义。 public class TailRecursionTest { 而且,事实上这也就是足够完善的编译器所做的转换。 记住:我们不能寄希望于我们的代码会总是运行在会转换尾递归调用的 JVM 上。因此,为了保证您的程序在所有 JVM 上都有适当的性能,您应始终努力把那些最自然地符合尾递归模式的代码按迭代风格编写。 学习的过程就是学会学习方法的过程,难道不是吗? |
正在阅读:提高 Java 代码的性能提高 Java 代码的性能
2005-08-15 14:40
出处:
责任编辑:xietaoming
键盘也能翻页,试试“← →”键