cheerp 简介

简介: 这个文章主要介绍了为什么要用cheerp技术以及和其他对标的技术对比,他的闪光点在哪里。WebAssembly 是一种中间码用于加速浏览器端应用,目前有多种语言可以编译或者交叉到这种格式。当然这个不是本文的内容,详细了解请移步 wasm官网目前支持:cc++是官方推荐的方式,详细使用见文档;其他语言AssemblyScript:语法和 TypeScript 一致,对前端来说学习成本低,为前端编写 WebAssembly 最佳选择;Rust:语法复杂、学习成本高,对前端来说可能会不适应。

这个文章主要介绍了为什么要用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 钟元 agent.zy@aliyun.com

相关文章
|
1月前
|
Unix 编译器 C语言
c++简介
c++简介
23 0
|
XML 安全 网络协议
netconf简介
netconf简要
|
1月前
|
编译器 程序员 C语言
C++系列一: C++简介
C++系列一: C++简介
|
并行计算 API 调度
TOPI 简介
TOPI 简介
113 0
|
XML 监控 Devops
CUNIT简介
CUNIT简介
342 0
CUNIT简介
|
安全 算法 网络安全
虚拟专用网简介
本文重点讲解虚拟专用网的理论知识,后续文章对具体虚拟专用网进行讲解(包括原理和配置),欢迎持续关注和订阅专栏。
943 0
|
API C++
exosip 和 pjsip 简介
oSIP  oSIP的开发开始于2000年7月,第一个版本在2001年5月发 布,到现在已经发展到3.x了。它采用ANSI C编写,而且结 构简单小巧,所以速度特别快,它并不提供高层的SIP会话 控制API,它主要提供一些解析SIP/SDP消息的API和事务处理 的状态机,oSIP的作者还开发了基于oSIP的UA lib:exosip和 proxy server lib:partysip.
3841 0
|
Java 测试技术 开发工具
AssertJ简介
JUnit和Hamcrest 学Java的一定知道JUnit吧,它是一个著名的Java单元测试框架。我们在使用JUnit测试的时候,一般情况下会使用它的Assert类下的各种assertXXX方法。
1574 0
|
网络协议 开发工具 Android开发
AndroidDevTools简介
来源:http://www.androiddevtools.cn/ Android SDK在线更新镜像服务器 中国科学院开源协会镜像站地址: IPV4/IPV6: http://mirrors.
2859 0
|
索引 容器
NSIndexSet 简介
NSIndexSet (以及它的可修改子类, NSMutableIndexSet) 是一个排好序的,无重复元素的整数集合。它看上去有点像 支持离散整数的 NSRange .它能用于快速查找特定范围的值的索引,也能用于快速计算交集, 同时,Foundation collection class 提供了很多好用的方法,方便你使用 NSIndexSet.
254 0
NSIndexSet 简介