💡
原文中文,约10000字,阅读约需24分钟。
📝
内容提要
自2013年以来,Emscripten项目使得在网络浏览器中使用libsodium成为可能。引入WebAssembly后,可以更有效地在Web浏览器中运行非JavaScript代码。libsodium在2017年增加了对WebAssembly的支持,提升了速度。与JavaScript一样,相同的代码可以在多个平台上无缝运行。应用程序开始在服务器端使用WebAssembly。wasm32-wasi用于对运行时进行基准测试。WebAssembly运行时有多个选择,每个都有其独特的功能和性能表现。
🎯
关键要点
- 自2013年以来,Emscripten项目使得在网络浏览器中使用libsodium成为可能。
- 引入WebAssembly后,可以更有效地在Web浏览器中运行非JavaScript代码。
- libsodium在2017年增加了对WebAssembly的支持,提升了速度。
- 与JavaScript一样,相同的代码可以在多个平台上无缝运行。
- 应用程序开始在服务器端使用WebAssembly,提供了安全性和沙箱特性。
- wasm32-wasi用于对运行时进行基准测试,多个运行时支持该目标。
- libsodium基准测试被广泛用于优化运行时和衡量WebAssembly的影响。
- 大多数其他运行时项目似乎已被放弃,WebAssembly的性能建议仍未普遍实现。
- 编写与各种运行时兼容的应用程序是一个挑战,批量内存操作是个例外。
- libsodium的基准测试使用zig cc编译器构建,支持wasm32-wasi。
- 基准测试在Zen 2 CPU上运行,忽略了设置/拆卸时间和编译时间。
- 多个WebAssembly运行时经过基准测试,包括wasm2c、wasmer、wasmtime等。
- 测试结果显示不同运行时在性能上的差异,wasmedge和wasmer表现不一。
- WebAssembly与本机代码相比,性能差距在2.32倍以内,但AES测试表现较差。
- iwasm是性能最佳的WebAssembly运行时,适合嵌入式应用。
- 基于LLVM/Cranelift/V8的运行时在性能上相似,但API稳定性各异。
- JavaScriptCore的WebAssembly性能不如V8,但有改进空间。
- wazero是Go应用程序的首选,具有零依赖和良好的集成性。
- wasm2c是一个将WebAssembly转译为C的工具,性能表现优秀。
- WebAssembly生态系统在过去两年中发生了显著变化,未来前景光明。
🏷️
标签
➡️