【发布时间】:2018-06-26 21:10:07
【问题描述】:
在 JVM 上运行速度最快的语言是什么?
斯卡拉?时髦? JRuby?
【问题讨论】:
-
这不取决于你用它做什么吗?
标签: jvm performance
在 JVM 上运行速度最快的语言是什么?
斯卡拉?时髦? JRuby?
【问题讨论】:
标签: jvm performance
见http://benchmarksgame.alioth.debian.org/。 Java 非常快,Scala 几乎一样快。 JRuby 慢了 10-30 倍。 Groovy 是slow too。
【讨论】:
Java。
实际上,在大多数情况下,速度差异可以忽略不计。静态语言会比动态语言快,但不会快很多。
【讨论】:
正如 Anthony 所说,Java 是最快的语言。
静态类型语言(Java、Scala)比动态类型语言(Groovy、JRuby)更快。
【讨论】:
您必须小心比较的内容。 除了其他人提到的“这取决于你用它做什么”之外,它还取决于如何你这样做。
例如,像 Scala 这样的语言可以让您自然地表达在 Java 中可能需要更长时间才能完成的习语和算法。这并不是说你不能在做同样的事情时与 Scala 的表现相匹敌——只是在一种语言中匹配另一种语言中的自然习语可能会成为一种丑陋的解决方法(注意我并不是说我相信 Scala 实际上比Java 在任何方面——我没有这方面的数据——除了 Scala 在设计时考虑到了可扩展性——因此得名)。
换句话说,性能通常与算法有关,而算法的选择通常与表达的难易程度有关。所以“为工作使用正确的工具”在这里适用——无论该工具碰巧是 Java、Scala、JRuby 还是其他任何工具(尽管我怀疑在任何情况下动态语言都比静态语言快而不是病态的)。
当然,我们也可以在优化等之前讨论分析,但这并不能直接解决问题。
【讨论】:
答案:bash !?
这可能不是问题的直接答案,但如果“快速”与启动时间有关,那么 bashj(支持 java 的 bash,https://sourceforge.net/projects/bashj/)提供了极好的启动时间。下面是来自 java、bash 和 bashj 的“Hello World”的比较。 bashj 版本使用一个隐藏的 JVM 服务器,调用它来显示 msg。
minimum (msec) median (msec)
bash 2 6
bashj 7 11
java 72 80
使用 bashj 从其 main() 入口点执行 java 程序比使用 java 本身更快!
这里是bashj源代码:
#!/usr/bin/bashj
#!java
static void hello() {System.out.println("Hello, world !");}
#!bashj
j.hello()
对于一般的java方法调用,bashj时间是JVM执行时间加上~1msec
【讨论】:
bashj 对我来说是新的。很有趣。
我认为这取决于您所说的更快是什么意思,以及语言为性能而编写的好坏。
例如,如果您正在做一些数学密集型的事情,那么 Scala 会比 Java 快。
但是,如果你避免在 java 中使用慢的函数并在所有有意义的地方使用 final,你可以让 Java 比 Scala 运行得更快,据我最近在一次采访中被告知。
因此,这是一个很难笼统地回答的问题,因为人们会展示 Scala 或 Java 更快的实例。
但是,如果您不使用vars,而是使用val,我相信Scala 通常会更快。
【讨论】:
任何编译成字节码的语言都可以在带有 JIT 的 JVM 上以同样快的速度运行。
【讨论】: