Javascript 与 Java 相比有多快?[已关闭]

2022-08-31 12:12:31

是否有任何测试可以将Javascript的性能与Java的性能进行比较?

更新:由于每个人都在问为什么这个问题,这里有一些上下文:)

众所周知 - 我希望 - Javascript现在不仅驻留在Web客户端中,而且还驻留在具有node.js的Web服务器中。

它也可以在手机中运行,并通过appcelerator和phonegap进行dekstops。

它还可以大量用于Web浏览器中,以使用户体验像桌面应用程序一样一流。

但是Java也可以做这些事情,在Web客户端和手机上运行小程序。它也是后端的一种语言,有许多框架可供选择。

由于它们中的每一个都可以在上述区域中几乎/完全相互替换,因此我想知道它们之间的性能差异,对于我描述的每个情况:

  • 客户端:Java Applets vs Javascript
  • Server: Java EE vs Javascript with Node.js + Express
  • 手机:Java ME vs Javascript with Phonegap / Appcelerator
  • Desktop: Java SE vs Javascript with Phonegap / Appcelerator

我希望现在的背景更加清晰。


答案 1

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并不是凭空出现的,它基于变形Smalltalk VM的源代码,该源代码是由一群人创建的,其中包括一个名叫Lars Bak的人。

鉴于两者或多或少相同,我们可以期待类似的性能。唯一的区别是,HotSpot有超过一百名工程师从事15年的工作,而V8有十几位工程师的工作不到5年。这是性能上的唯一区别。它不是关于静态与动态类型(Java静态类型的,但大多数JVM和HotSpot当然不会进行任何静态优化,所有优化都是纯粹的动态),编译与解释(HotSpot实际上是用额外的JIT编译器解释的,而V8是纯编译的),高级与低级。这纯粹是关于金钱的。

但我敢打赌,对于Java实现更快的每对Java和JavaScript实现,我可以找到另一对JavaScript实现更快的实现。另外,我可能会保留这个对子,只使用不同的基准。将计算机语言基准测试游戏称为“游戏”是有原因的:他们甚至鼓励你在自己的页面上玩基准测试,使任何任意语言上升到顶峰。


答案 2

我只有一个轶事要补充:我最近在Javascript(nodejs v0.6.8)中重新实现了Java calc服务器(财务)。WRT开发时,Javascript实现与原始Java实现相比轻而易举,代码行数要少得多。那是一股清新的空气,真的。

基于Javascript的服务器能够通过2.4k交易/秒进行计算,而Java服务器使用相同的硬件处理400 + / sec,使用更少的内存。我不会将速度提高归因于原始V8与Java 7的性能,而是归因于实现。Javascript实现使用更少的数据结构,执行更少的方法调用,并采取更直接和简洁的方法。

毋庸置疑,我对node.js的性能非常满意。而这来自一个只使用Java多年(9)年的人。