关于服务
翻译我构建WebAssembly模块,使浏览器达到接近原生的速度,从而使以前在原生JavaScript中缓慢运行的重计算能够快速运行,真正为您的用户提供服务。我的主要工作是将现有代码从C、C++和Rust移植到WASM:我选择合适的工具链、内存模型和优化标志,然后将其全部封装在一个清晰的JavaScript API中,供您的前端团队调用,而无需深入低级细节。如果您已经有一个进行实际工作的原生库,我会将其移植到Web上,而无需完全重写;如果项目从头开始 — 我会用Rust编写计算核心,以确保安全和速度。
WebAssembly在所有达到计算限制的场景中最具优势:图像和视频处理、音频管道、大数组和矩阵的操作、解析器、压缩和解压缩、密码学、物理和模拟,或在标签中处理大型数据集。我认为JS和WASM之间的边界与核心本身同样重要:一个快速的模块如果连接到一个慢的桥梁,仍然是慢的。因此,我尽量减少跨越这个边界的复制,故意使用共享内存和类型化数组,并将长任务卸载到Web Workers,以保持接口的响应性。在适合目标平台的情况下,我使用SIMD和线程来挤出更多性能。
您将获得一个带有类型接口的文档化版本模块,一个小型演示,证明数字和与其替代的JavaScript实现的基准测试。我在主要浏览器中进行测试,关注真实的包大小,并提供带有构建脚本的源代码,以便团队可以随时重建模块。如果您已经有一个难以使用或速度慢的WASM模块,我将负责审核和优化现有构建。
— 将C、C++和Rust移植到WebAssembly
— 图像、视频和数据的快速模块
— 与JS、Workers、SIMD和线程的集成
— 基准测试、文档和可重现的构建
WebAssembly在所有达到计算限制的场景中最具优势:图像和视频处理、音频管道、大数组和矩阵的操作、解析器、压缩和解压缩、密码学、物理和模拟,或在标签中处理大型数据集。我认为JS和WASM之间的边界与核心本身同样重要:一个快速的模块如果连接到一个慢的桥梁,仍然是慢的。因此,我尽量减少跨越这个边界的复制,故意使用共享内存和类型化数组,并将长任务卸载到Web Workers,以保持接口的响应性。在适合目标平台的情况下,我使用SIMD和线程来挤出更多性能。
您将获得一个带有类型接口的文档化版本模块,一个小型演示,证明数字和与其替代的JavaScript实现的基准测试。我在主要浏览器中进行测试,关注真实的包大小,并提供带有构建脚本的源代码,以便团队可以随时重建模块。如果您已经有一个难以使用或速度慢的WASM模块,我将负责审核和优化现有构建。
— 将C、C++和Rust移植到WebAssembly
— 图像、视频和数据的快速模块
— 与JS、Workers、SIMD和线程的集成
— 基准测试、文档和可重现的构建