Javascript与Java相比有多快?

有没有比较Javascript的性能和Java的testing吗?

更新:因为每个人都在问为什么这个问题,下面是一些情况:)

大家都知道 – 我希望 – 现在的JavaScript不仅仅存在于Web客户端,而且还存在于具有node.js的Web服务器中。

它也可以运行在手机和encryption和phonegap的dekstops。

它也可以在networking浏览器中大量使用,使用户像使用桌面应用程序一样体验一stream的体验。

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

由于他们中的每一个都可以在所提到的领域几乎/完全取代彼此,所以我想知道他们之间的性能差异,对于我所描述的每个案例:

  • 客户端:Java小程序与Javascript
  • 服务器:Java EE与Javascript与Node.js + Express
  • 手机:Java ME与Phonegap / Appcelerator的Javascript
  • 桌面:Java SE与Javascript与Phonegap / Appcelerator

我希望现在的情况更加清楚。

Java和JavaScript都是编程语言。 编程语言只是一堆抽象的math规则。 编程语言不是很快。 或缓慢。 他们只是。

应用程序的性能与语言无关。 最重要的因素是应用程序体系结构。 然后algorithm效率。 然后微观优化。 然后是编译器/解释器的质量。 然后是CPU。 也许还有其他几个步骤。 但是,这种语言并不直接发挥作用。 (当然,如果你正在谈论基准testing,那么特定的基准testing也起到一定的作用,基准testing的执行情况如何,testing效果如何,执行基准testing的人是否真的了解基准testing,更重要的是统计数据,而且,“快速”的确切 含义非常重要,因为它也可以对基准产生重大影响。

然而,语言可能间接起作用:在10行高度expression,清晰,简洁,可读,良好分解,隔离的高级Lisp代码中find并修复性能瓶颈要比100行(请注意,这两种语言只是一个例子,我并不是说要把任何一种语言都选出来)。例如,Twitter就用比Ruby更lessexpression的语言说,已经能够在如此短的时间内对其架构进行如此彻底的改变,以解决其可扩展性问题。 而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库不能很好地兼容I / O。)

但是,如果你真的想比较这两者,那么下面是一个有趣的数据点:HotSpot是一个比较stream行的JVM实现,它是由一群人创build的,其中包括其他人,一个叫Lars Bak的家伙。 但实际上,HotSpot并没有出现,它是基于Anamorphic Smalltalk虚拟机的源代码,这个虚拟机是由一个团队创build的,其中包括一个名叫Lars Bak的人。

V8是一个比较受欢迎的,也是性能更高的JavaScript实现之一,它是由一群人组成的,其中包括一个名叫Lars Bak的人。 但实际上,V8并没有出现,它是基于Anamorphic Smalltalk虚拟机的源代码,这个虚拟机是由一队人组成的,其中包括一个名叫Lars Bak的人。

鉴于两者差不多,我们可以期待类似的performance。 唯一的区别是HotSpot已经有超过100名工程师工作了15年,而V8有十几名工程师工作了不到5年。 是performance唯一的区别。 这不是关于静态types和dynamictypes(Java 静态types的,但大多数JVM和当然HotSpot没有任何静态优化,所有优化都是纯dynamic的),编译与解释(HotSpot实际上是用额外的JIT编译器解释的,而V8纯粹是编译),高层次还是低层次。 纯粹是关于金钱。

但是我打赌,对于Java实现速度更快的每一对Java和JavaScript实现,我可以find另一个JavaScript实现更快的实例。 另外,我可以保持这一对,只是使用不同的基准。 “计算机语言基准游戏”是一个“游戏”,有一个原因 :他们甚至鼓励你在自己的页面上使用基准来使任意语言上升到顶端。

我只有一个轶事补充说:我最近用Javascript(nodejs v0.6.8)重新实现了Java calc服务器(finance)。 WRT开发时间,与原始Java实现相比,Javascript实现简单得多,代码行数量less得多。 真是一口新鲜空气。

基于Javascript的服务器能够通过2.4k trades / sec来计算,而Java服务器在相同的硬件上使用更less的内存来处理400 + / sec。 我不会将速度增加归因于原始V8与Java 7性能,而是实现。 Javascript实现使用的数据结构less得多,方法调用的次数less得多,并且采取更直接和简洁的方法。

不用说,我对node.js的性能非常满意。 而这个来自Java的人只有很多(9)年。

下面是一些比较Javascript(V8)和编译Java的testing:

  • 32位
  • 64位

它们表明Java通常更快1 。 但是,如果您使用这些页面和链接的资源进行挖掘,则会发现与like类似的比较是非常困难的。

有趣的是,对于“regex-dna”基准testing,Javascript确实比Java更好(在某些条件下)。 我的猜测是,这是因为Javascript正则expression式引擎比Java正则expression式引擎更快。 考虑到在典型的Javascript应用中正则expression式的重要性,这并不是完全没有意外。

1 – 严格来说,你不能说语言X比语言Y快。你只能比较各种语言的具体实现。 我链接到的网站是清楚的…如果你喜欢通过头版进入。 然而,从具体的数据点进行概括并不是完全不合理的……并且缺乏相互矛盾的数据点的表面……在计算密集型任务中,Java通常比Javascript快。 但另一方面,这种performance往往不是客观上重要的标准。

Java,显然。

程序员喜欢比较执行速度,比如某种不喜欢的内容。 这只是一个衡量指标,大部分时间,而不是最重要的一个。 Java是一种语言,它的速度足够快,几乎可以满足任何需求,但是足够高,可以获得像GC这样的东西,而这些东西通常不会用类似的语言获得。 Javascript是一种dynamic的closures语言,对于快速完成任务是非常有用的(对于FP程序员被困在面向对象的世界中;-))。 在任何一个合适的地方都没有太多的交叉路口。

我现在就不要再啰嗦了

编辑:解决在post中的编辑

由于用惯用的javascript(函数组成的函数)编写的方式,对于asynchronous编程来说,它的出色performance非常出色,可能比任何其他类似stream行的语言都要好。 当涉及到大量的短连接时,Node.js会发光,所以javascript是非常适合这种事情的。

虽然node.js真的很棒,但是新的热度并不意味着它是最好的,不pipe炒作是什么。 如果一个Java应用程序可以被节点replace,那么Java很可能就不适合了。

可能不会,但这并不重要。

在使用Google Chrome的JavaScript JIT之前,只要问题大到足以克服加载时间,Java就会赢得JavaScript。

由于整数与浮点math的关系,Java应该还是会让JavaScript大打折扣。 不pipeJIT有多好,都不能真正弥补这一点。

http://benchmarksgame.alioth.debian.org/u64q/javascript.html

(请记得仔细查看cpu列,以及已经过去的秒数)。

根据上面的链接,现在的实际情况是,几乎所有的事情都要慢得多。

他们只有名字相似,就是这样。 Java被编译,而JavaScript被解释(大部分)。 即使在V8的及时编译器Java的速度一切。