繁体   English   中英

如何诱导或帮助Java编译器优化代码?

[英]How to induce or help Java Compilers to optimize code?

我想知道哪些优化的Java编译器通常会被阻止(或未被检测到),因为代码不清晰或编写错误,以及混淆编译器代码的常见错误

请理解现代运行时环境(实际的Java命令)并不是一个接一个地执行java字节码,而是在进行非常繁重的处理以编译成实际的机器代码。

这意味着没有特殊的理由使字节码特别智能或优化,因为JRE无论如何都会给出相同的结果。 对于移动Java设备,解释器不太智能,并且存在内存限制,ProGuard系统允许进行相当多的优化转换。 您可能会发现这些有趣。

JIT编译器通常针对常见的编码模式和用例进行了优化。 最好的办法是坚持常见的约定,模式和习语。 尝试“优化编译器的代码”可能会导致代码实际上更难以优化。

我建议只是尝试使你的代码清晰和富有表现力,让编译器完成它的工作。

...我想知道在编码时是否有一些非常常见的错误可以通过更多的注意来避免。

对于Sun的HotSpot JVM,你可以在一般意义上做出的唯一错误是尝试以棘手的方式(可能)做事,因为它相信它会使你的代码更快。 最好只编写简单的代码。 我从HotSpot团队的一位资深人士那里看到了这个建议。

最佳做法是将优化保留给JIT编译器,并且只有在探查器告诉您出现问题时才尝试进行微优化。

(你应该避免使用众所周知的事情,例如使用流控制的异常,在循环中进行字符串连接,或者尝试进行自己的内存管理。但这些可能比你感兴趣的级别更高。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM