Java和JavaScript都是编程语言。编程语言只是一堆抽象的数学规则。编程语言不快。或慢。他们只是。
应用程序的性能与语言无关。最重要的因素是应用程序架构。然后是算法效率。然后微优化。然后是编译器/解释器的质量。然后是CPU。也许两个之间的其他几个步骤。然而,语言不直接起作用。 (当然,如果你在谈论基准测试,那么特定的基准测试也会发挥作用,基准测试的执行情况,运行得如何好,执行基准测试的人是否知道基准测试,甚至更重要的是统计。此外,“fast”实际意义的确切定义非常重要,因为它也可以对基准有重大影响。)
然而,语言可能间接地发挥作用:在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库,因为JavaScript没有I / O库,所以不能很好地处理事件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和JavaScript实现,Java实现更快,我可以找到另一对JavaScript实现更快的对。此外,我可以保持对,只是使用不同的基准。有一个原因称为计算机语言基准游戏“游戏”:他们甚至鼓励你在自己的页面上玩弄基准,使任何任意语言上升到顶部。