就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、参考资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,访问帮助中心 /help/reopen-questions 以获得指导。
Java 很慢。
这不仅仅是一个“都市传说”,它似乎是一个事实。由于延迟,您不将其用于实时编码,也不将其用于集群/并行计算。那里有数千个基准测试,特别是“Java vs C# vs C++”。
http://benchmarksgame.alioth.debian.org/ http://benchmarksgame.alioth.debian.org/
根据上述网站,不仅 Java 的性能几乎与 C 一样好(远远低于其他语言),而且 Scala 和 Clojure(两种运行在 JVM 上的函数式语言)都比 OCaml、Erlang 具有更好的性能。
而且还有很多“Java 比 X 更快”的说法(例如,这里有一个关于 SO 的问题:Java 运行时性能与本机 C/C++ 代码比较? https://stackoverflow.com/questions/1984856/java-runtime-performance-vs-native-c-c-code ).
因此,在某些情况下,Java 似乎很快。有人可以解释为什么吗?
为什么在某些情况下,考虑到动态代码(Scala、Clojure)和垃圾回收,字节码可能比本机代码运行得更快?既然速度快了,为什么还有延迟呢?
这似乎是一个矛盾,有人能解释一下吗?
James Gosling 在《编程大师》一书中解释道:
James : 确切地。这些天我们
击败真正优秀的 C 和 C++
编译器几乎总是如此。当你
进入动态编译器,你得到
编译器的两个优点
在最后一刻奔跑。一
你确切知道什么芯片组吗
你正在继续奔跑。很多次当
人们正在编译一段C
代码,他们必须编译它才能运行
类似于通用 x86
建筑学。几乎没有一个
你得到的二进制文件特别好
为其中任何一个进行调整。你下载
Mozilla 的最新版本,它会
几乎可以在任何 Intel 上运行
架构CPU。还蛮多的
一个 Linux 二进制文件。很一般,
它是用 GCC 编译的,即
不是一个很好的C编译器。
当 HotSpot 运行时,它确切地知道
你正在运行什么芯片组。它
确切地知道缓存是如何工作的。它
确切地知道内存层次结构
作品。它确切地知道所有
CPU 中的管道互锁工作。
它知道什么指令集
该芯片具有扩展功能。它
精确优化什么机器
轮到你了。然后是另一半
是它实际上看到了
应用程序在运行时。是可以的
有统计数据知道哪些
事情很重要。它能够
C 编译器可以内联的东西
永远不会做。得到的东西
Java 世界中的内联非常漂亮
惊人的。然后你继续
存储管理的工作方式
现代垃圾收集器。与一个
现代垃圾收集器、存储
分配速度极快。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)