protobuf.js 中的 encode 与 decode 模块使用 wasm 模块代替

2021-02-23 20:34:34 +08:00
 shawncheung

看了很多关于 wasm 的相关资料,这里 wasm 的性能数据还是不错的,这里有没有可能让 protobuf.js 里面的编解码部分使用 wasm 来代替从而进一步提升 node 在 pb 解析的性能呢?有小伙伴做过尝试吗?

2484 次点击
所在节点    Node.js
4 条回复
learningman
2021-02-23 21:27:50 +08:00
你说的是 wasm 还是 asm.js ,如果是后者感觉不是很有必要
jones2000
2021-02-24 00:08:13 +08:00
用 protobuf c++版本, 做压缩 /解压 2 个接口,, 根据 WebAssembly 教程里面编译下就可以用了。https://developer.mozilla.org/en-US/docs/WebAssembly
whitehack
2021-02-24 10:24:38 +08:00
首先 wasm 肯定没有 c++ 效率高, wasm 的代价也是不低的.

回到 protobuf,
node 里有一个 c++实现的包 https://github.com/chrisdew/protobuf

记得我做过性能测试对比,c++的实现是比 js 实现高很多的.

但是 chrisdew/protobuf 有点不兼容 protobufjs,如果你原来就用的 protobufjs 的话, 可以参考我几年前改过的 https://github.com/whtiehack/protobuf

另外这是几年前的老库了.
bertonzh
2021-02-24 11:38:41 +08:00
你要考虑 JS 和 WASM 之间交互数据的开销,不能只对比编解码。交互数据的过程实际上就是编解码的过程。
如果是给 Node 使用,可以考虑 NAPI 。WebAssembly 就算了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/755609

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX