我想知道哪些优化的Java编译器通常会被阻止(或未被检测到),因为代码编写不清晰或编写错误,以及混淆编译器代码的常见错误
答案 0 :(得分:3)
请理解现代运行时环境(实际的Java命令)并没有一个接一个地执行java字节码,但是正在进行非常繁重的处理以编译为实际的机器代码。
这意味着没有特别的理由使字节码特别智能或优化,因为JRE无论如何都会给出相同的结果。对于移动Java设备,解释器不太智能,并且存在内存限制,ProGuard系统允许进行相当多的优化转换。你可能会发现这些很有趣。
答案 1 :(得分:1)
JIT编译器通常针对常见的编码模式和用例进行了优化。最好的办法是坚持常见的约定,模式和习语。试图“为编译器优化代码”可能会导致代码实际上更难以优化。
我建议只是尝试使代码清晰,富有表现力,让编译器完成它的工作。
答案 2 :(得分:0)
......我想知道在编码时是否有一些常见的错误可以通过更多的注意来避免。
对于Sun的HotSpot JVM,你可以在一般意义上做出的唯一错误是尝试以棘手的方式(可能)做事,因为它相信它可以使你的代码更快。最好只编写简单的代码。我从HotSpot团队的一位资深人士那里看到了这个建议。
最佳做法是将优化保留给JIT编译器,并且只有在探查器告诉您出现问题时才尝试进行微优化。
(你应该避免使用众所周知的事情,例如使用流控制的异常,在循环中进行字符串连接,或者尝试自己进行内存管理。但这些可能比你感兴趣的更高级别。)< / p>