Wasm Runtime开源项目Wasmer 2.2性能再升级,并且开始支持M1芯片

WebAssembly Runtime开源项目Wasmer开发团队发布2.2版本,这个版本更新其Singlepass编译器,重新支持Aarch64(Linux ARM64)架构,官方提到,借由更新Singlepass编译器,将有助于Web3和区块链开发人员,在Windows、Linux和macOS执行高性能Wasmer Runtime。另外,Wasmer 2.2也加入对Apple M1(macOS Arm64)处理器的支持。

由于浏览器低端程序语言WebAssembly的高安全性和高性能等特性,受到越来越多的企业青睐,采用WebAssembly开发网页应用程序,提供用户更好的网页应用程序体验,但原本WebAssembly只是设计在浏览器客户端中运行,提供比JavaScript更快的编译和执行速度,而为了让WebAssembly也能在浏览器之外的地方执行,Mozilla在2019年发布了标准系统接口WASI(WebAssembly System Interface)。

而Wasmer便是通过支持WASI,让WebAssembly超轻量容器在包括桌面、云计算和物联网设备上。Wasmer能够容器化应用程序,让二进制文件在不需要修改的情况下,于Linux、macOS、Windows以及浏览器上执行,并且保护主机不受恶意程序、错误和bug影响,而且因为WebAssembly轻量级容器的优点,Wasmer还可让WebAssembly应用程序在Docker容器不能运行的地方执行。

在最新的Wasmer 2.2,开发团队进一步改进了Wasmer的执行效率,并以衡量CPU和嵌入式微处理器性能的CoreMark基准,在Linux x86_64架构上衡量Wasmer新旧版本的性能差异,使用Singlepass编译器,Wasmer 2.2和0.17相比有约25%的增长,而Cranelift更是增长了接近90%。

官方也在Aarch64上进行相同的测试,结果十分有趣,与x86_64相比,Cranelift的表现不佳,但是都使用Aarch的情况下,Wasmer 2.2跟Wasmer 1.02相比,性能进步达1.5倍,而Singlepass的进步更大,性能改进达3.7倍。

众所期待,Wasmer 2.2终于支持Apple M1芯片,官方提到,M1芯片真的非常强大,数字与Linux x86_64和Linux ARM64相比,都高上不少。官方仅展示Apple M1芯片在Wasmer 2.2上的基准测试分数,无论是Singlepass和Cranelift,分数远远超过上述其他两个架构。

与Cranelift和LLVM编译器相比,Singlepass的执行性能可能较慢,但是Singlepass的线性编译速度却比LLVM和Cranelift更好,官方解释,因为LLVM和Cranelift都执行了许多优化,使得WebAssembly程序可以获得最佳性能,但这也会增加JIT额外编译的时间,而相对稳定的Singlepass,即便是复杂的文件,编译时间也不会长得太夸张。

将Singlepass、Cranelift和LLVM,在Linux x86_64和ARM64以及macOS Arm64上执行,从下表可以看到很明显的时间差异,Singlepass在三个编译器上,都能在约1到3秒内执行完毕,时间最长的是Linux ARM64,也只要7秒多,但Cranelift执行速度就要以分钟计,在Linux ARM64里甚至要接近35分钟,LLVM则可能无法完成任务,在Linux x86_64上,可能会在3小时后停止执行,而在Linux ARM64上,可能会首席执行官达3天后停止。

开发团队重构Singlepass编译器,使得Wasmer能够激活新的后端实例,而这也让Singlepass更灵活,但开发团队提醒,由于Wasmer可应用的环境很多样,用户还是需要针对生产工作负载和场景执行测试,才能知道真正的运行状况。

发表评论