簡體   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