大家可能都知道,Java代码是由JVM编译和解释的。我的问题涉及到优化:它是只在运行时由JVM优化,还是在编译时也优化?
为了编写高效的代码,我在哪里可以找到支持的优化列表?或者,JVM优化是否足够强大,以至于我只需编写可读且易于维护的代码,而不管速度性能如何?
发布于 2009-06-03 09:52:52
大多数优化都是由JVM完成的。通常,在JIT级别比在编译时有更多的优化空间。(“优化”标志实际上是从javac
中去掉的,因为事实证明,一些“优化”实际上会损害现实世界中的性能。)
一般而言(这适用于许多语言/平台,而不仅仅是Java):
n
,那么“理论上更好”的算法很容易因为常量回滚( factors.)实际上可能没有太大影响
发布于 2009-06-03 09:54:46
Java编译器可以检测“热点”,并自适应地修改正在执行的代码,从而提供更好的性能。HotSpot JIT编译器可以检测“热点”并自适应地修改执行代码。阅读关于它的here。
另一方面,如果你想一开始就编写高效的代码,那就读一本书,比如Robert Simmons的"Hardcore Java“或者Brian Goetz的"Java Concurrency in Practice”。
发布于 2009-06-03 09:50:35
我肯定会选择写代码的可读性和可维护性,而不是假设的优化。
过早的优化通常被认为是一件坏事。http://en.wikipedia.org/wiki/Optimization_(computer_science)#When_to_optimize
当然,使用性能分析工具测量和证明瓶颈完全是另一回事。如果你这样做了,并且可以证明有一些地方需要优化,那么你就可以衡量好处,然后进行优化。
https://stackoverflow.com/questions/943883
复制相似问题