您现在的位置:新闻首页>赛车直播

谷歌力推WebAssembly,要干掉JS?

2018-06-01 10:41编辑:优先级新闻网人气:


  【IT168 评论】虽然WebAssembly还比较新,但它已经被证明是快速响应Web应用程序和站点的有效方法。起初,WebAssembly被描述为“在网络上运行C ++的一种方式”,尽管我对C ++和Web都很热爱,但技术上总是模糊不清。直到2016年,我在Chrome开发工具峰会上再次听到这个消息,我决定尝试一下。

谷歌力推WebAssembly,要干掉JS?


  在进一步介绍之前,以下是我认为WebAssembly在可预见的未来不会发生的几件事情:

  1、替换JavaScript。

  2、一站式应用商店,为现有的web应用程序充电。

  3、完全替代本机应用程序。

  很多程序员都知道WebAssembly很快,那它到底有多快呢?

  

JS程序员可另辟蹊径:WebAssembly既快又有趣!

  作为参考,每秒60帧(FPS)是大多数显示器允许的最大值,并且平均帧时间为16.6MS。运行60 FPS就足以提供一个平滑顺畅的用户体验。电影和电视通常是24 FPS,这需要大约42 MS的平均帧时间。任何小于10 FPS的动画都是不可接受的,条形是每帧100 MS。

  用WASM进行开发

  WASM工具非常新,C ++和Rust是迄今为止所看到的唯一两个支持的语言。

  构建工具

  虽然工具很新但很好用,只是最初设置Emscripten编译器阶段有一点困难,程序员可使用与标准GCC编译非常相似的命令编译WASM命令。为了简化测试,可以使用这些工具:Clang,LLVM和Binaryen。

  在早期的WebAssembly中,确实必须引入Emscripten分支,就像这样:


  之后,就很容易了。设置环境变量也让工作变得更轻松......


  运行`emcc`的方式与运行`gcc`的方式大致相同:


  这将生成一个可以被浏览器使用的WASM文件,这导致...

  Javascript API和C ++通信

  WASM文件用于生成WebAssembly模块(将其视为可执行文件),然后将其实例化(将其视为流程)。这个实例是沙箱,可以从JavaScript代码中直接访问。创建WASM模块非常简单,尤其是ES6 Promises从网络中获取二进制代码,通过一个非常简单的命令就可以运行它,并且bam!模块。

  实例化模块是提供WASM内存对象和JavaScript导出的函数,这可能包括C ++标准库中的大量内部功能。数学函数(如sin和cos)通常使用原始组件段实现,不能直接在WASM中使用。

谷歌力推WebAssembly,要干掉JS?


谷歌力推WebAssembly,要干掉JS?


谷歌力推WebAssembly,要干掉JS?


  一旦模块被实例化,从C ++代码导出的所有函数都可以附加到实例的“exports”对象中使用。 一般来说,这些都是C ++代码中的功能,所以建议使用extern“C”,以防止由C ++编译器执行的名称被修改。

  就像其他工具一样,WASM并不是适合于所有场景。在决定是否在项目中使用它之前,需要先了解一些事情:

  WebAssembly只能用于数字通信

  WebAssembly支持32位和64位的整数和浮点数,C ++结构可以很好地使用数字类型(所有数据最终都是字节),但JavaScript对象和数组不是很容易转换,必须投入相当数量的逻辑来将JavaScript对象转换为等效的C ++对象。

  这里是将对象从WASM转换为JS,反之会导致性能和代码复杂性方面的成本。在WebAssembly中编写不同的模块,而不仅仅是单个类或函数实现。

  JavaScript负责所有内存管理

  WebAssembly必须使用由JavaScript提供的内存堆。从JavaScript的角度看,这实际上是一个ArrayBuffer包装器。从C ++的角度看,这看起来像一个指针的正常heap-de引用。这意味着你可以编写解引用NULL的有效代码,0x00是一个JS ArrayBuffer开头的有效地址,但不要每次都这么做。

  通过JS ArrayBuffer访问WASM实例内存是很好的,因为它允许程序员从应用程序的JS和WASM两面访问内存。不幸的是,无法访问系统分配命令,如“malloc”和“free”,因此本质上必须自己编写,使用Emscripten等工具可以帮助缓解这种痛苦,因为它有很多可以重复使用的样板。

  调试

(来源:网络整理)

织梦二维码生成器
已推荐
0
  • 凡本网注明"来源:的所有作品,版权均属于中,转载请必须注明中,http://www.jsxwbxg.com。违反者本网将追究相关法律责任。
  • 本网转载并注明自其它来源的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品来源,并自负版权等法律责任。
  • 如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。






图说新闻

更多>>
新手专用车现代悦纳报价及图片悦纳怎么样

新手专用车现代悦纳报价及图片悦纳怎么样



返回首页