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以及瀏覽器上執行,並且保護主機不受惡意程式、錯誤和臭蟲影響,而且因為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可應用的環境很多元,用戶還是需要針對生產工作負載和場景執行測試,才能知道真正的運作狀況。

熱門新聞

Advertisement