Silverlight在性能上是否比JavaScript有优势?

14

最近在讨论Silverlight时提到了速度优势。支持Silverlight的观点是,它在浏览器中的表现比Javascript更好,因为它是编译(和管理)代码。

然后有人说这个优势只适用于IE,因为IE解释Javascript时效率低下,而其他浏览器如Chrome和FireFox在执行之前将Javascript编译成机器码,因此与Silverlight一样表现良好。

是否有人对这个性能问题有明确的答案?即Silverlight和Javascript在Chrome和Firefox上的性能是否相当?


1
有人更新了这个测试以适应最新版本的Chrome和Silverlight 4吗? - Adam Rackis
10个回答

19

猜测是有趣的。或者我们可以尝试一两个测试...

这个Silverlight和Javascript象棋示例已经更新为Silverlight 2。当我运行它时,C#平均每秒处理420,000节点,而Javascript只有23,000节点。我运行的是Google Chrome(v.0.4.154.25)的开发分支。这仍然是Silverlight近18倍的速度优势。

质数计算显示Silverlight有3倍的优势:在Javascript中计算100万个质数需要3.7秒,在Silverlight中只需1.2秒。

因此,我认为对于计算来说,Silverlight仍然有相当强的优势,我的直觉是它可能会一直保持这种优势。双方都将继续优化,但在动态语言中您可以进行优化的限制是有些局限性的。

Silverlight在动画方面(尚)没有优势。例如,Bubblemark测试显示Javascript运行速度为170 fps,而Silverlight运行速度为100 fps。我认为我们可以期待在Silverlight 3发布时会有所改善,因为它将包括GPU支持


最新的Bubblemark数据显示,启用位图缓存的Silverlight 3.0明显击败了Flash,并以相当大的优势领先于JavaScript。 - Ken Smith

4

大多数浏览器通过虚拟机运行Javascript。然而,Javascript仍然是一门奇怪的语言,即使像V8这样的“快速”虚拟机,在现代标准下也非常慢。

我希望CLR更快。


2
我不明白为什么你要比较一种脚本语言和一个浏览器插件。它们的功能不同。前者与DOM交互,而后者在浏览器内运行多媒体应用程序。
从性能角度比较Flash和Silverlight似乎更有用。
编辑:经过一些研究,我发现你可以在Silverlight中与DOM交互。除了性能问题之外,我认为它不能被视为良好的Javascript替代品,除非你需要进行大量的客户端交互。我看到两个主要缺点:
1)您将强制用户下载Silverlight应用程序,而不是依赖相对较小的.js文件。
2)用户必须在使用您的页面之前安装Silverlight。

2
我认为从架构上来说,它是相当平衡的。一方面,Silverlight是MSIL代码,与原始优化的本地代码相比速度相对较快,但由于虚拟机(CLR)开销仍然运行较慢,并且在进行ngen时仍会有缓慢的初始加载时间。另一方面,Javascript的速度不太可靠,因为Javascript引擎存在巨大的变化,其性能范围相差甚远。您可以使用像IE这样的慢解释器,尽管IE8正在加快速度,然后您可以使用像SpiderMonkey和V8这样的更快的编译器/解释器,它们最近才开始探索Javascript的性能极限。还有一些正在研发阶段的新技术,如TraceMonkey,具有巨大的潜力,可以大大提高Javascript的性能(接近本地代码速度)。Javascript具有单线程的固有劣势,但考虑到编写好的多线程代码的难度,很难说这会产生多大的差异。总之,在将苹果与苹果进行比较时,真正的性能瓶颈是DOM,在那里使用的技术并不重要。

2

我进行了初步测试,结果显示Silverlight运行速度更快。以下是我从http://bubblemark.com/收集到的一些有趣数据。

Bubblemark comparisons by browser and Javascript vs. Silverlight

总体而言,Silverlight要快得多,但Chrome的JavaScript实现则远远领先于其他浏览器!

请记住,这只是在一台机器上、一个操作系统(XP)等条件下的测试结果。如果要得出更多结论,则需要进行更加广泛的测试。


0

看起来 Chrome 的 JavaScript 实现比 Silverlight 更快。


Silverlight 作为微软产品,确实具有优势。此链接提供更多信息:http://geekswithblogs.net/lbugnion/archive/2010/07/14/javascript-vs-silverlight-an-answer.aspx - vaibhav

0

在这里应该考虑平台。Silverlight在Lnux、Solaris或Mac上的表现真的是一个很大的问题!


0

HTML5怎么样?我认为在比较JavaScript的性能时,HTML起着重要作用。因此,我们应该使用HTML5 + JavaScript和Silverlight进行性能比较。


0

我认为是的,因为它有.NET的CLR。此外,随着Google Chrome和尚未完全发布的Firefox 3.1中JavaScript的最新发展,人们可能希望进行一些自己的基准测试;我还不知道有任何比较。(有人知道吗?)

尽管如此,在我看来,.NET应该通常比Javascript更快,正如之前所指出的那样,这不会加速网络。因此,对于复杂的算法,SilverLight将更快,但对于网络请求,您可能没有任何明显的区别。

关于性能问题,您可能需要查看Flash 10,它可以使用“Alchemy”允许c/c++代码。这可能是比SilverLight更便携的解决方案。


-3

如果你正在使用“Internet Exploder”,那么可能会出现问题...

如果你正在使用V8(Chrome)或即将推出的Safari和FireFox,我非常怀疑会出现问题;)

顺便说一句,我很想看到IE使用Silverlight,而Chrome使用Javascript进行下棋。这将震撼微软...!! ;)


我使用Chrome,但我不认为它是一个特别有用的选择来进行比较,因为它的市场份额非常小。 - TM.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接