当前位置: 首页 > news >正文

cheerp 简介

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

这个文章主要介绍了为什么要用cheerp技术以及和其他对标的技术对比,他的闪光点在哪里。

WebAssembly 是一种中间码用于加速浏览器端应用,目前有多种语言可以编译或者交叉到这种格式。当然这个不是本文的内容,详细了解请移步 wasm官网

目前支持:

c\c++是官方推荐的方式,详细使用见文档; 其他语言

  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

转载于:https://my.oschina.net/littlemonkeyc/blog/2999214

相关文章:

  • CSS 三角实现
  • 第十二章 Java内存模型与线程
  • 从源码分析如何优雅的使用 Kafka 生产者
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • 阿里云重庆大学大数据训练营落地分享
  • Android Studio多渠道打包实战
  • 传统企业触网的战略--借助电商外包
  • 本周ASP.NET英文技术文章推荐[06/10 - 06/16]
  • 匈奴的历史简述
  • SpringCloud(Finchley版)6 - Config-Client
  • Golang-长连接-状态推送
  • 硬盘结构
  • 虚函数可不可以是内联函数
  • 用JS实现人脑和计算机交互,这个厉害了
  • 翻硬币
  • 分享一款快速APP功能测试工具
  • 《Java编程思想》读书笔记-对象导论
  • 0基础学习移动端适配
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • echarts的各种常用效果展示
  • js
  • Laravel 中的一个后期静态绑定
  • Linux链接文件
  • Mysql5.6主从复制
  • SpriteKit 技巧之添加背景图片
  • 当SetTimeout遇到了字符串
  • 力扣(LeetCode)56
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 如何胜任知名企业的商业数据分析师?
  • 入门级的git使用指北
  • 使用agvtool更改app version/build
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • 优秀架构师必须掌握的架构思维
  • 最近的计划
  • #pragma pack(1)
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (SpringBoot)第七章:SpringBoot日志文件
  • (实战篇)如何缓存数据
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (转)VC++中ondraw在什么时候调用的
  • (转)我也是一只IT小小鸟
  • ./configure,make,make install的作用(转)
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .Net Redis的秒杀Dome和异步执行
  • .NET 命令行参数包含应用程序路径吗?
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
  • .net反混淆脱壳工具de4dot的使用
  • .NET构架之我见
  • @Autowired注解的实现原理
  • @SpringBootApplication 包含的三个注解及其含义
  • [2]十道算法题【Java实现】
  • [20150629]简单的加密连接.txt