這個文章主要介紹了為什麼要用cheerp技術以及和其他對标的技術對比,他的閃光點在哪裡。
WebAssembly 是一種中間碼用于加速浏覽器端應用,目前有多種語言可以編譯或者交叉到這種格式。當然這個不是本文的内容,詳細了解請移步
wasm官網目前支援:
cc++是官方推薦的方式,詳細使用見文檔;
其他語言
- AssemblyScript:文法和 TypeScript 一緻,對前端來說學習成本低,為前端編寫 WebAssembly 最佳選擇;
- Rust:文法複雜、學習成本高,對前端來說可能會不适應。詳細使用見文檔;
- Kotlin:文法和 Java、JS 相似,語言學習成本低,詳細使用見文檔;
- Golang:文法簡單學習成本低。但對 WebAssembly 的支援還處于未正式釋出階段,詳細使用見文檔。
cheerp:
cheerp技術是基于llvm的一個交叉工具技術集合, 目前可以支援到的交叉
c/c++到javascript/asm.js/wasm的功能完備的的可移植方案。
筆者從2014年開始就接觸cheerp至今, 一直對這個技術抱有極大的熱情。
對比emcc(不懂自行百度)優勢和劣勢。
優勢:
- cheerp代碼更加簡單, 環境配置也簡單。
- 完備的C++14支援。
- 編譯後擁有更小的體積(記憶體模型)
- 更容易的混合程式設計(c++,js,wasm)
- 更快的性能
- 可以支援降級方案
缺點: 幾乎是唯一也是緻命的缺點,沒有對應的文檔。
對比其他交叉到wasm的方案
- LLVM AOT支援
- 本地數學庫支援
- 交織流水線優化
- 更短的指令集合
- 更适合大型項目
- 無差别融合asm.js/js庫
- 超越30%的性能
性能:
c/c++開啟優化1200ms >
wasm 1990ms >
c/c++未開啟優化 2400ms >
asm.js 2600ms >
node.js 2900ms >
luajit 4500ms>
lua5.2 34000ms
by 鐘元 [email protected]