ClojureScript

更快的編譯/執行速度和 Spec 快取修復

2017 年 6 月 27 日
ClojureScript 團隊

ClojureScript 1.9.660 版本中包含多項令人振奮的效能增強功能。其中一些改進加快了編譯器本身的速度,另一些則優化了編譯器產生的程式碼,還有一些則微調了資料結構以及對它們的常見操作。

編譯器效能

透過兩個小變更,編譯器現在可以更快地編譯 ClojureScript 程式碼。使用者回報編譯時間縮短了 20–40%。

別忘了嘗試 :parallel-build,預設情況下它未啟用。這可以進一步將您的編譯時間縮短一半。

程式碼效能

  • :^const Var 值現在會被內聯

  • sortshuffle 現在快 30-40%(感謝 to-array 優化)

  • apply 快 200-400%

  • defmulti 在遺失的情況下現在快得多(200-1000%)

  • 集合和對應的等價性快 100-200%

  • 在集合和對應上使用 reduce 現在快約 100%

正確性

已進行許多正確性修復,其中一些使 ClojureScript 更符合 Clojure 的行為。在編譯快取方面也進行了其他重要的修復;特別是當啟用快取時,定義 Specs 的程式碼現在可以正常運作。

注意:此版本為在協定方法實作中採用可變參數簽名的不正確程式碼引入了新的警告。此類程式碼將在此版本中繼續運作。請務必更新任何使用此建構的程式碼或函式庫,以便協定實作符合某些現有的簽名。

新功能

  • 新的 resolve 巨集 - 類似於 Clojure 的,但在編譯時

  • 模組支援萬用字元命名空間

  • 新的 Closure 語言選項 :es-2017:es-next

  • 新的編譯器選項 :fn-invoke-direct(對 :static-fns 的進一步優化擴充)

  • 您可以使用 js/Promise 和更多 ES 功能,並讓 Google Closure Compiler 產生 polyfill(:rewrite-polyfills 編譯器選項)

您絕對應該在您的程式碼上試用此版本,看看它的效能如何!我們希望您喜歡此版本!

如需 ClojureScript 1.9.660 中的完整更新列表,請參閱 變更