dart2js代码比javascript更快?

hkk*_*hkk 13 javascript performance dart dart2js

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

追踪基准

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

Pix*_*ant 18

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

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

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

  • @DA我认为"草率"是一种不公平的错误描述.即使是最好的编写C代码也会遗漏一些对编译器来说很明显的优化,而且任何从事普通项目的人都会优化可维护性.他们的说法可能有点*误导,但总的来说我说它是准确的. (7认同)

Gün*_*uer 6

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

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

  • 现代运行时和JIT很乐意这样做. (3认同)