天天看點

cheerp 簡介

這個文章主要介紹了為什麼要用cheerp技術以及和其他對标的技術對比,他的閃光點在哪裡。

WebAssembly 是一種中間碼用于加速浏覽器端應用,目前有多種語言可以編譯或者交叉到這種格式。當然這個不是本文的内容,詳細了解請移步

wasm官網

目前支援:

cc++是官方推薦的方式,詳細使用見文檔;

其他語言

  1. AssemblyScript:文法和 TypeScript 一緻,對前端來說學習成本低,為前端編寫 WebAssembly 最佳選擇;
  2. Rust:文法複雜、學習成本高,對前端來說可能會不适應。詳細使用見文檔;
  3. Kotlin:文法和 Java、JS 相似,語言學習成本低,詳細使用見文檔;
  4. Golang:文法簡單學習成本低。但對 WebAssembly 的支援還處于未正式釋出階段,詳細使用見文檔。

cheerp:

cheerp技術是基于llvm的一個交叉工具技術集合, 目前可以支援到的交叉

c/c++到javascript/asm.js/wasm的功能完備的的可移植方案。

筆者從2014年開始就接觸cheerp至今, 一直對這個技術抱有極大的熱情。

對比emcc(不懂自行百度)優勢和劣勢。

優勢:

  1. cheerp代碼更加簡單, 環境配置也簡單。
  2. 完備的C++14支援。
  3. 編譯後擁有更小的體積(記憶體模型)
  4. 更容易的混合程式設計(c++,js,wasm)
  5. 更快的性能
  6. 可以支援降級方案

缺點: 幾乎是唯一也是緻命的缺點,沒有對應的文檔。

對比其他交叉到wasm的方案

  1. LLVM AOT支援
  2. 本地數學庫支援
  3. 交織流水線優化
  4. 更短的指令集合
  5. 更适合大型項目
  6. 無差别融合asm.js/js庫
  7. 超越30%的性能

性能:

c/c++開啟優化1200ms >

wasm 1990ms >

c/c++未開啟優化 2400ms >

asm.js 2600ms >

node.js 2900ms >

luajit 4500ms>

lua5.2 34000ms

by 鐘元 [email protected]