之前想着用 rust 做 web 开发, 因此想找个服务端渲染 (ssr) 的方案
看了下 rust 生态里面目前有 4 个比较知名 js 引擎
其中 boa 是纯 rust 实现的一个实验性质的 js 引擎, 这个目前应该还达不到生产标准, 所以没有考虑
mozjs 是 servo 工作组封装的 spidermonkey, 看了一下 api, 几乎没做封装, 比较难用, 而且 crates.io 上发布的版本还是两年前的 这个应该只是为了给 servo 用的, 其他项目想使用比较困难, 因此也不考虑
rusty_v8 是 denoland 工作组封装的 libv8, api 封装的比较好, 支持执行 wasm, 目前用于 deno 运行时, 用于生产环境应该没啥问题
quickjs-rs 是对 quickjs 的封装,api 非常简单
目前能用的就 rusty_v8 和 quickjs-rs, 所以测试了一下他们的性能
测试用的前端框架是 Vue.js 2.6, 就输出一个最简单的 hello world
测试代码见: https://gist.github.com/zengxs/f35fe4f18bb65641c9ef12c937f45be7
测试代码都是 release 模式编译, js 代码也是 production 模式编译
引擎 | 运行次数 | 最高内存占用 | 总耗时 | 平均耗时 |
---|---|---|---|---|
quickjs | 1 | 5.1 MiB | ~0.5ms | - |
quickjs | 10000 | 7.2 MiB | - | ~0.5ms |
v8 | 1 | 9.1 MiB | ~3.5 ms | - |
v8 | 10000 | 67.1 MiB | - | ~0.05ms |
v8-jitless | 1 | 9.3 MiB | ~3 ms | - |
v8-jitless | 10000 | 66.8 MiB | - | ~0.13ms |
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.