JS狙击者,WebAssembly是否能够穿越之后来居上上

谷歌力推WebAssembly,要干掉JS? | 程序师后使用快捷导航没有帐号?
Mozilla员工
为什么WebAssembly会影响每个开发者
Mozilla员工
本帖最后由 yingliu 于
10:25 编辑
WebAssembly 是一种新的二进制执行格式,是由 Mozilla、Google、微软、苹果等大公司共同制定和推动的标准,目前已在 Firefox 52 版本中实现。WebAssembly 的主要特点是可以极大改善网页程序的性能,比 JavaScript 的性能更加优异,这篇文章将说明关于 WebAssembly 与 JavaScript 以及 asm.js 的对比。
JavaScript 作为 Web 平台的标准开发语言,越来越多的软件发展成了 Web 应用。在过去几年,我们看到越来越多的项目试图通过开发编译程序,将其他语言代码转化为 JavaScript,以此让开发者克服 JavaScript 自身存在的一些短板。其中一些项目专注于给编程语言增加新的功能,比如微软的 TypeScript,一些是为了加快 JavaScript 的执行速度,例如 Mozilla 的 asm.js。
在默认环境下,JavaScript 文档其实就是简单的文本文件,先是从服务器下载,然后由浏览器中的 JavaScript 引擎解析并编译,用户通过 Ajax 技术在浏览网页时可以与服务器进行通信。
1B9--6D.png (51.45 KB, 下载次数: 79)
17:36 上传
虽然很多 JavaScript 框架都致力于性能优化,但是一套基于字节码的系统显然会有更快更好的性能表现。
是一个 JavaScript 的一个严格的子集,可以被用来作为一个底层的、高效的编译器目标语言。asm.js 提供了一个类似于 C/C++ 虚拟机的抽象实现,包括一个可有效负载和存储的大型二进制堆、整型和浮点运算、高阶函数定义、函数指针等。
asm.js 的思想是使用它所规定的方法来编写 JavaScript 代码,支持 asm.js 的引擎会将代码转变为十分高效的机器码。如果你是将 C++ 代码编译为 asm.js,将在浏览器端获得极大的性能提升。
900D9008-FDC1-4F7D-9E58-E2F9FBEAAC94.png (32.44 KB, 下载次数: 72)
17:36 上传
而 WebAssembly 的设计目的是文件体积很小,可以快速下载和解析。尽管 gziped minized 的 JavaScript 相比 Naive 代码已经相当紧凑。 WebAssembly 的二进制格式仍通过重新设计减小了大约10-20%的体积(比较 gzipped 大小)。
WebAssembly 更大的优势在于解析:它比 JavaScript 的解析快一个数量级,这主要归功于它能更快的分析二进制格式文件,同时在多核设备和利用 CPU 性能上更加优秀,例如散列和加密算法。
WebAssmbly 相比 asm.js 的优势主要在于性能方面:根据
的描述:在移动设备上,对于很大的代码库,asm.js 仅仅解析就需要花费 20-40 秒,而
显示 WebAssembly 的加载速度比 asm.js 快了20倍,这主要是因为相比解析 asm.js 代码,JavaScript 引擎破译二进制格式的速度要快得多。
WebAssembly 首先是一个类编译器,因此生成它的编译器(工具链)和运行它的 VM(浏览器端)两方面共同的表现决定了它的性能。
由于 asm.js,Emscripten 已经做了一系列工具链优化,在此基础上 Mozilla 将 Emscripten asm.js 优化器替换为了更快速的 Binaryen WebAssembly 优化器。 在优化时默认删除重复的函数,这往往会将大型编译的 C++ 代码库缩小约 5%。提高了 Relooper 算法效率,在编译循环类型时有很多帮助。
目前 WebAssembly 并不是每一个基准测试都表现优秀,还有很多需要修复和优化的问题,不过 WebAssembly 是由所有主流浏览器共同设计,我们很少看到所有主流浏览器厂商携手推出这样的项目,虽然 asm.js 也可以在本地高速运行,不过各家标准不一,有时用某一种方法实现可能在其他浏览器中会导致另外一种效果。 毕竟 asm.js 不是一个实际的标准:它只是 JavaScript 的一个非正式规范的子集。WebAssembly 可以为游戏、科学、设计、影像、视频等用途提供高素质的表现,让网页版本的画面运行起来就如同在本机上运行一样,并能加速现有的 Web app 的表现,可以预见的是它将会使人们在 Web 端的体验更好。
更多参考:
mozilla总是参与研发先进技术!
耐得住寂寞方能不寂寞
标准化进程进行时,Go!Go!Go!评论已经自动封存,请勿再发言论
声明: 下面的评论属于其发表者所有,不代表本站的观点和立场,我们不负责他们说什么。
这个不错(得分:1 )
总算是上正道了。
(得分:0) 日 13时30分 星期四
(得分:0) 日 13时35分 星期四
(得分:0) 日 12时50分 星期四
(得分:0) 日 15时57分 星期四
(得分:0) 日 09时11分 星期五问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
Webassembly的出现是否意味着JavaScript要完?
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
知乎上有关于的讨论,不过是否能把javascript拍死,那还得看厂商买不买账吧。技术的更迭是需要时间的。。。况且现在基于javascript衍生出来的各路框架都将前后端涵盖了个遍,所以:要拍死javascript感觉长路漫漫啊~
分享到微博?
你好!看起来你挺喜欢这个内容,但是你还没有注册帐号。 当你创建了帐号,我们能准确地追踪你关注的问题,在有新答案或内容的时候收到网页和邮件通知。还能直接向作者咨询更多细节。如果上面的内容有帮助,记得点赞 (????)? 表示感谢。
明天提醒我
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:}

我要回帖

更多关于 后来居上 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信