在JVM上运行最快的语言是什么?
Scala?Groovy?JRuby?
在JVM上运行最快的语言是什么?
Scala?Groovy?JRuby?
Java.
但是,就大部分情况而言,速度差异将是微不足道的。静态语言比动态语言更快,但差别不大。
答案:bash !?
这可能不是对问题的直接回答,但如果“快速”与启动时间有关,则支持Java的bashj(带有Java支持的bash,https://sourceforge.net/projects/bashj/)提供出色的启动时间。以下是Java、bash和bashj的“Hello World”的比较。bashj版本使用一个隐藏的JVM服务器来显示消息。
minimum (msec) median (msec)
bash 2 6
bashj 7 11
java 72 80
使用bashj比使用java本身更快地从其main()入口点执行java程序!
以下是bashj源代码:
#!/usr/bin/bashj
#!java
static void hello() {System.out.println("Hello, world !");}
#!bashj
j.hello()
对于一般的Java方法调用,bashj时间是JVM执行时间加上约1毫秒。
bashj
对我来说是新的。有趣。 - Thufir就像Anthony所说,Java是最快的编程语言。
静态类型的语言(如Java、Scala)比动态类型的语言(如Groovy、JRuby)更快。
在比较时要小心。除了其他人提到的“这取决于你用它做什么”的因素外,还取决于你如何去做。
例如,像Scala这样的语言可以让你自然地表达习惯用语和算法,而在Java中可能需要更长的方式来实现。这并不是说你不能在做同样的事情时与Scala的性能相匹配 - 只是在一种语言中为了匹配另一种语言的自然习惯而变成了一个丑陋的解决方法(请注意,我并不是说我相信Scala在任何特定方面都比Java快 - 我没有相关数据 - 除了Scala是以可扩展性为设计目标的 - 因此得名)。
换句话说,性能通常与算法有关,而选择算法通常与表达的简便性有关。因此,“使用正确的工具完成工作”适用于此处 - 无论该工具是否为Java、Scala、JRuby或其他语言(尽管我怀疑在没有病态情况下,动态语言比静态语言更快的情况几乎不存在)。
当然,我们也可以谈论优化前的分析等,但这并没有直接回答问题。
我认为这取决于您所说的“更快”的含义,以及语言编写性能的好坏。
例如,如果您正在进行数学密集型任务,则Scala比Java更快。
但是,如果您避免在Java中使用速度较慢的函数,并在所有适当的位置使用final,根据我最近在面试中听到的内容,您可以使Java运行得比Scala更快。
因此,这是一个难以一般化回答的问题,因为人们会展示Scala或Java更快的实例。
但是,我相信,如果您不使用var
而是使用val
,则Scala通常会更快。