繁体   English   中英

dart2js代码比javascript更快?

[英]How is dart2js code faster than javascript?

我想更好地了解飞镖对性能的影响。 飞镖网站上 ,他们的基准测试显示编译为Javascript的Dart代码比Javascript更快。 这怎么可能?

Tracer Benchmarks

我理解Dart VM如何比v8更快,但我没有得到的是dart2js生成的javascript如何比普通的旧javascript更快,当它们都在相同的环境中运行时,v8。

dart2js能够执行通常不会在JavaScript代码中手动添加的优化。

在这种情况下,Dart作为源语言没有什么特别之处:任何生成JavaScript的自动化工具都应该能够做到这一点,例如GWT编译器(Java到JavaScript)也可以这样做。 当然,您可以在JavaScript源代码上运行自动化工具来生成更好的JavaScript,这就是Closure编译器所做的。

从技术上讲,如果您了解所有技巧,您可以使用手写JavaScript手动实现相同的速度。

一个例子是函数内联。 如果需要重复调​​用的代码片段,则可以在函数/方法中重构它。 Dart2js经常做相反的事情。 方法调用通常被称为内联的被调用函数/方法所包含的代码片段替换。 如果你手动执行此操作,将导致无法维护的代码。

我认为许多优化都朝着这个方向发展。 以这种方式编写代码是不可读的,因而无法维护。 这并不意味着它很草率。

来自飞镖队的维亚切斯拉夫·叶戈罗夫(Vyacheslav Egorov)进行了精彩的演讲,他详细解释了一些优化,包括衬里......

http://www.infoq.com/presentations/dart-compiler

总结 Vyacheslav Egorov详细介绍了Dart的一些语言特性如何影响新JIT Dart编译器的设计以及V8 JavaScript引擎如何影响整体设计。

Seth Ladd和Kasper Lund有一段有趣的视频 Kasper参与创建Dart2js编译器,并提供了有关编译器如何优化Javascript代码的一些代码示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM