原标题:WebAssembly执行速度真的很强悍吗?对微软Edge很无语

Firefox一直在WebAssembly上耕耘,在macOS与Windows上表现的都很好,Chrome 67在WebAssembly执行速度没有特别突出,甚至在macOS上还输给Java,而Safari与Edge则让人有点惊讶。

为解决网页应用程序的的原罪,WebAssembly一直被视为救星,那实际使用的状况如何呢?提供网页PDF SDK的PSPDFKit为此做了实际测试,发现结果跟预期很不一样,执行速度依浏览器以及操作系统不同而有很大的差异,唯有Firefox无论是在macOS或是Windows,执行WebAssembly速度都远快于Java外,其他差异不大甚至还发生慢上许多的情况。PSPDFKit也将测试网页发布,供测试。

PSPDFKit在2016年发布了他们第一个网页SDK,而这是一个需要依赖服务器组建来渲染文件的方法,因此当他们了解利用WebAssembly,能让浏览器直接处理完所有渲染工作,不需要后端基础设施,于是在积极研究下几个月后,他们发布了基于WebAssembly的PSPDFKit网页版本,以大幅降低客户的使用障碍。

PSPDFKit网页开发人员Philipp Spiess提到,渲染PDF是一件复杂的事,除了PDF是一个存在25年的格式外,其中还有许多情况需要处理,总共需要约50万行的C++程序码来完成PDF渲染工作。但要将这些C++程序代码完全移植到Java成本太高,他提到PSPDFKit不可能这么做,而WebAssembly和asm.js等技术,允许他们在浏览器中使用相同的程序码基础,将C++程序代码转成WebAssembly程序,由浏览器快速渲染PDF文档。

由于服务建构在WebAssembly基础上,他们对于WebAssembly的执行性能非常在意,因此PSPDFKit对此进行了多浏览器多平台的测试。他们想透过这个测试了解渲染情况,来提高网页版PSPDFKit的执行性能,因此Philipp Spiess强调,这个测试讲究应用程序实际执行的情况,测试得到的分数越低越好。

他还提到,用于测试的应用程序不会直接调用WebAssembly,反而还要先测试与之通讯的桥接部分,这样才符合网页版PSPDFKit实际执行状况。此外,这个测试还停用了WebAssembly的串流编译功能,Philipp Spiess表示,这项功能让WebAssembly和Java-fallback1难以比较,因为Java无法使用一边串流同时编译的最佳化,为了让测试简单易于比较,因此暂时停用了这项功能。

PSPDFKit在macOS与Windows两大操作系统,测试了Chrome、Firefox、Safari和Edge四大热门浏览器。结果显示Firefox在两个操作系统执行WebAssembly性能都是最好的,在macOS中,WebAssembly的执行性能分数1902,而Java-fallback1则是6855(分数愈低愈好),而在Windows中则是1300比4424,效率约快上3.5倍。

Philipp Spiess解释,Firefox之所以测试结果可以这么好,是因为采用了分层编译以及IndexedDB存储器。同时Firefox也给了PSPDFKit建议,在初始编译时,浏览器基准编译器(Baseline Compiler)启动会比较慢,因此应该避免在第一次启动时,在环境执行太多工作进程。

Chrome的情况则比较复杂一些,Chrome 67与Chrome 69金丝雀版本表现有些差异,在macOS中,Chrome 67执行WebAssembly分数5408略输Java-fallback1的4784,而Windows中WebAssembly分数3129则小赢Java-fallback1的3373。

Philipp Spiess认为,Chrome的WebAssembly的执行性能一直以来比现不错,但其V8引擎放弃为WebAssembly采用IndexedDB存储器稍微可惜。不过,官方表示他们将在Chrome 69更新基准编译器,因此Chrome 69加入测试后,无论在macOS或是Windows的WebAssembly执行性能皆获提升,且于macOS平台由输转赢。

值得注意的是,Safari即便在主场macOS上,WebAssembly的测试分数却高达8382,执行速度低于Java-fallback1的5802,在PSPDFKit与苹果合作追踪问题后,发现Safari存在一个bug严重影响WebAssembly的表现,官方表示在修正后速度已经获得提升,但没有详述分数。

如图,吸引眼球的项目则是微软力推的Edge,WebAssembly在Windows的执行表现分数破万11362,远高于Java-fallback1的7315,即便Edge执行Java的速度也比其他竞争平台慢2倍。返回搜狐,查看更多

责任编辑:

java web运行的快慢_WebAssembly执行速度真的很强悍吗?对微软Edge很无语相关推荐

  1. 使Docker搭建Java Web运行环境

    Docker 是 2014 年最为火爆的技术之一,几乎所有的程序员都听说过它.Docker 是一种"轻量级"容器技术,它几乎动摇了传统虚拟化技术的地位,现在国内外已经有越来越多的公 ...

  2. 【jeecg Docker安装】使用 Docker 搭建 Java Web 运行环境

    Docker 是 2014 年最为火爆的技术之一,几乎所有的程序员都听说过它.Docker 是一种"轻量级"容器技术,它几乎动摇了传统虚拟化技术的地位,现在国内外已经有越来越多的公 ...

  3. 使用 Docker 搭建 Java Web 运行环境

    Docker 是 2014 年最为火爆的技术之一,几乎所有的程序员都听说过它.Docker 是一种"轻量级"容器技术,它几乎动摇了传统虚拟化技术的地位,现在国内外已经有越来越多的公 ...

  4. CentOS6.5使用 Docker 搭建 Java Web 运行环境

    http://www.osforce.cn/group/25/thread/1211?fr=weibo&mu=140910XRNWcD Docker 是 2014 年最为火爆的技术之一,几乎所 ...

  5. idea java web运行_使用IDEA创建JavaWeb项目 部署本地tomcat并运行

    一.下载商业版IDEA 二.新建JavaWeb项目 1.在菜单栏找到File  >>  New  >> Project 2.在弹出的窗口中找到Java EnterPrise & ...

  6. 在redhat/centos的linux环境下安装配置java web运行环境

    2019独角兽企业重金招聘Python工程师标准>>> 环境安装配置: 1.jdk的安装配置     ①下载jdk,地址 http://www.oracle.com/technetw ...

  7. windows XP(32位) 安装java web 部署环境

    背景 客户有个服务器是windows XP系统,需要安装java web 运行环境,这个就是产品线上要的服务器. 有人会问那间公司还会用这个xp系统来做服务器的,没错我的第一反应也是一样,然后我建议换 ...

  8. IDEA for Java Web

    Ref:Intellij Idea 创建Web项目入门(一) Ref:IntelliJ IDEA 简体中文专题教程 Ref:'cannot run program '/path/to/tomcat/b ...

  9. Java web框架

    Java web框架综述 Java Web设计框架:Web应用的Java框架综述 特金德·辛格博士,助理教授, 旁遮普巴廷达Baba Farid学院计算机科学系(印度) 摘要:在本文中,我将Web设计 ...

最新文章

  1. excel求和为什么是0_Excel教程:小小的N函数竟如此厉害
  2. 『中级篇』Minikube快速搭建K8S单节点环境(61)
  3. Oracle字符集的查看查询和Oracle字符集的设置修改
  4. android中怎么网络判断,Android中判断网络是否连接实例详解
  5. php mysql导出csv文件_详解PHP导入导出CSV文件
  6. Spring中都用到了哪些设计模式?
  7. 阿里云2020上云采购季,你适合买什么云产品?
  8. leetcode 300. 最长上升子序列
  9. Fluent Web API集成测试
  10. oracle一对多个值,Oracle一张表中实现对一个字段不同值和总值的统计(多个count)...
  11. nodejs注册为windows服务实现开机自启动
  12. ISA 发布内网 NLB
  13. UG塑胶模具设计培训,、胶模具成型工艺培训
  14. php 二级导航,导航下面的二级导航,显示和隐藏,
  15. LSM6DS3 gyro数据设置
  16. python空字典怎么定义_python dict怎么定义
  17. iOS15新特性、iOS15适配
  18. 北向接口和南向接口及SDN
  19. ios IDP/IEP证书申请测试用
  20. YDOOK:putty: 最新版 putty 下载安装完整教程,windows怎么下载安装 putty?

热门文章

  1. java中getDelta是什么意思_Java IResourceDelta.getMarkerDeltas方法代码示例
  2. KDT 对比 DDT 小栗子
  3. 三代测序纠错软件汇总篇
  4. unity鼠标控制镜头旋转_unity3D鼠标滚轮来实现镜头拉近拉远及视角旋转
  5. java中保存图片到本地_java保存网络图片到本地
  6. setTimeOut()和setInterval()的用法
  7. 图像拼接--Fish-Eye Lenses-Based Camera Calibration and Panoramic Image Stitching
  8. Linux/Debian/Ubuntu报错解决:W: Target Packages (main/binary-amd64/Packages) is configured multiple times
  9. matlab心电图诊断系统,ECG-diag MATLAB心电图自动诊断程序 联合开发网 - pudn.com
  10. apk里面的图片不显示是加密了吗_【App】智能电视机视频盒子软件,你们缺吗?...