你好,欢迎来到电脑编程技巧与维护杂志社! [免费注册][请登录 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:技术专栏 / Web开发
新型编译器将原生代码转换为JavaScript
 

导读:Emscripten C/C++到JavaScript项目利用来自LLVM的后端构建起更具速度与针对性优势的编译方案。

 

在当初刚刚公布时,Emsripten听起来完全像是个冲劲十足的技术笑谈:一款能够将C/C++代码转换成Asm.js的编译器,其处理成果能够通过Web浏览器或者在Node.js框架中作为JavaScript子集加以运行。

然而事实证明这一切并非笑谈。Emscripten与Asm.js(后者最初为Mozilla公司发起的一个研究项目)已经自诞生之日起逐步发展,并最终取得了令人瞩目的重大进展。最新公布的技术成果是,Emscripten新版本利用来自LLVM的编译器核心取代了原有机制——这项编译器技术框架原本主要用于C/C++环境,但在理论上也能够支持多种其它语言。

根据Emscripten项目的开发者们所言,转而选择LLVM给Emscripten带来了多项全新优势。首先,整个编译过程更加快捷——“通常能够带来四倍甚至更高的转换效率提升,”他们指出,而且转换所需要的内存容量也有所降低。此次更替还“避免了原有编译器偶尔出现的不可预知的恶性拖慢现象。”更重要的是,LLVM后端允许Emscripten与LLVM自身以更为紧密的方式实现对接。

使用LLVM的惟一缺点在于,其必须经过有针对性的重新编译才能与Emscripten顺利协作。LLVM的处理成果只能为我们提供上述优势当中的一部分,除非具备其它选项、否则很难将其充分发挥。

Asm.js仍然被普遍视为一种实验性技术,目前能够直接为其提供支持的也只有Mozilla火狐这一款浏览器。不过它的实际表现仍然令人印象深刻。就在最近,Asm.js成功将虚幻游戏引擎移植到了JavaScript环境之下,从而在无需任何插件或者非原生代码配合的情况下使该平台能够直接运行在浏览器当中。

谷歌目前尚未最终决定是否为Asm.js提供全面支持,不过Chrome浏览器已经确定将向由其生成的JavaScript应用敞开怀抱——虽然速度提升水平还远无法与火狐相比肩。谷歌的计划似乎是将Dart语言作为浏览器平台的近原生代码执行速度提升方案,不过JavaScript的普及度以及灵活性至少就目前来看仍具备极为显著的优势、Dart在短时间内恐怕很难取得竞争优势。

  推荐精品文章

·探析云计算下应用软件用户数据安全问题
·地理空间集束线可视化表达
·Android智能净水机APP开发(一)
·2018年12月目录  
·springAOP的思想和设计以及实现
·LeetCode332. 重新安排行程
·基于fastjson的微信模板消息的封装与实现…
·WEB日志清洗 - java代码
·关于C++内存生长
·C++继承——宠物的生长
·python——实现名片管理器
·Clion c++调用c动态链接库
·【C# 重构】-散落的知识
·Java SE—面向对象 this关键字的作用

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备06048724号,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区长春桥路5号6号楼1209室,邮编:100089