如何编写高效的Java代码?[已关闭]

大家可能都知道,Java 代码是由 JVM 编译和解释的。我的问题是关于优化的:它是在运行时仅由JVM优化还是在编译时优化?

为了编写高效的代码,在哪里可以找到支持的优化列表?或者JVM优化是否足够强大,以至于我只需要编写可读且易于维护的代码,而不管速度性能如何?


答案 1

大多数优化是由 JVM 完成的。与编译时相比,JIT 级别的优化空间通常更大。(“优化”标志实际上已被删除,因为事实证明,一些“优化”实际上损害了现实世界中的性能。javac

一般来说(这适用于许多语言/平台,而不仅仅是Java):

  • 编写尽可能可读和可维护的代码。
  • 制定绩效目标和基准,以便始终衡量绩效
  • 努力使您的架构性能良好;以后很难改变(与改变实现相比)
  • 从算法的复杂性来考虑性能,而不是“使其速度提高10%”:从O(n^2)到O(n)的变化(通常)更重要。(这在很大程度上取决于现实世界的用法 - 如果你只处理的小值,“理论上更好”的算法很容易由于常量因素而变慢。n
  • 使用探查器确定瓶颈的位置
  • 只有当分析器表明值得这样做时,才以可读性为代价进行微优化
  • 在这样的优化之后进行测量 - 您可能实际上没有太大的影响,在这种情况下回滚

答案 2

Java HotSpot JIT编译器可以检测“热点”并自适应地修改执行代码,从而提供更好的性能。在这里阅读有关它的信息

另一方面,如果你想写出一开始就有效的代码,请阅读Robert Simmons的“Hardcore Java”或Brian Goetz的“Java Concurrency in Practice”等书。


推荐