【发布时间】:2011-08-04 05:22:03
【问题描述】:
Java 很慢。
这不仅仅是一个“都市传说”,它似乎是一个事实。由于延迟,您不会将其用于实时编码,也不会将其用于集群/并行计算。那里有成千上万的基准测试,特别是“Java vs C# vs C++”。
http://benchmarksgame.alioth.debian.org/
根据上面的网站,不仅 Java 性能几乎与 C 一样好(与其他语言相差甚远),而且 Scala 和 Clojure(都是在 JVM 上运行的函数式语言)都具有比 OCaml、Erlang 更好的性能。
还有很多“Java 比 X 更快”,也有(例如,关于 SO 的问题:Java Runtime Performance Vs Native C / C++ Code?)。
所以在某些情况下,Java 似乎很快。谁能解释一下原因?
在某些情况下,在给定动态代码(Scala、Clojure)和垃圾回收的情况下,为什么字节码可能比本机代码运行得更快?速度快了怎么还有延迟?
这里好像有点矛盾,谁能解释一下?
【问题讨论】:
-
正确的 GC 肯定比任何非平凡手动内存管理都要快。
-
Java VM 可以使用在应用程序运行期间收集的信息进行优化,而这些信息在编译时是不可用的。
-
创建一个可管理数量的对象,你不会得到显着的 GC 开销,如果这是一个真正的担忧,但在 90% 以上的情况下它不是。可以构建一个白天根本不进行 GC 的系统。
-
@OscarRyz >>Java VM 可以使用在应用程序运行期间收集的信息进行优化,但在编译时不可用
标签: java performance jvm native-code