Java和JavaScript都是编程语言。编程语言只是一堆抽象的数学规则。编程语言不是很快。还是慢。他们只是有。
应用程序的性能与语言无关。最重要的因素是应用程序体系结构。然后是算法效率。然后进行微优化。然后是编译器/解释器的质量。然后是CPU。中间可能还有其他几步。但是,语言并不直接起作用。(当然,如果你谈论的基准,那么也是特定基准起到了重要作用,以及如何很好地执行基准,它是如何运行的,谁执行基准家伙是否真的知道一些关于标杆,甚至更重要的是统计信息。此外,您实际含义的精确定义快速”非常重要,因为它也会对基准产生重大影响。)
但是,该语言可能会间接发挥作用:在10行高表达,清晰,简洁,易读,重构,隔离的高级Lisp代码中查找和修复性能瓶颈要比在100行中更容易。纠结的底层C。(请注意,这两种语言仅是示例。我并不是要单挑一种语言。)例如,Twitter曾说过,与Ruby相比,其语言表达能力较差,它们不会能够在短时间内对其架构进行如此重大的更改,以解决其可伸缩性问题。Node.js之所以能够提供如此出色的事件I / O性能,是因为JavaScript的标准库太烂了。(这样,Node.js本身必须提供所有I / O,因此他们可以从头开始针对事件I / O对其进行优化。Ruby和Python,例如,已经有了事件I / O库,它们的功能与Node.js一样好,并且更加成熟了……但是,Ruby和Python已经拥有大型标准库,包括I / O库,所有这些库都是同步的,不需要在事件库中不能很好地发挥作用。JavaScript不存在无法在事件I / O中很好地使用的I / O库的问题,因为JavaScript没有I / O库完全没有。)
但是,如果您真的想比较两者,那么这里有一个有趣的数据点:HotSpot是由一群人创建的,它是最受欢迎的,性能也更高的JVM实现之一。一个叫拉尔斯·巴克(Lars Bak)的家伙。但是实际上,HotSpot并不是凭空出现的,它是基于Anamorphic Smalltalk VM的源代码的,该源是由一组人(其中包括一个叫Lars Bak的人)创建的。
V8是目前最受欢迎的,性能也更高的JavaScript实现之一,它是由一组人(其中包括一个叫Lars Bak的人)创建的。但是实际上,V8并不是凭空出现的,它是基于Anamorphic Smalltalk VM的源代码的,该源代码是由一组人(其中包括一个叫Lars Bak的人)创建的。
鉴于两者大致相同,我们可以期待相似的性能。唯一的区别是,HotSpot拥有超过一百名工程师从事15年的工作,而V8拥有十几名工程师不到5年的工作。那是性能上的唯一区别。这与静态类型还是动态类型无关(Java是静态类型,但大多数JVM和某些HotSpot都不进行静态优化,所有优化都是纯动态的),编译与解释(HotSpot实际上是通过附加的JIT编译器来解释的,而V8是完全编译的),高级还是低级。这纯粹是关于金钱。
但是我敢打赌,对于Java实现更快的每对Java和JavaScript实现,我可以找到另一对JavaScript实现更快的对。另外,我可能可以保留这对货币,并使用其他基准。将计算机语言基准测试游戏称为“游戏”是有原因的:他们甚至鼓励您在自己的页面上使用基准测试,以使任何一种语言都升至最高水平。