protobuf.js 中的 encode 与 decode 模块使用 wasm 模块代替
看了很多关于 wasm 的相关资料,这里 wasm 的性能数据还是不错的,这里有没有可能让 protobuf.js 里面的编解码部分使用 wasm 来代替从而进一步提升 node 在 pb 解析的性能呢?有小伙伴做过尝试吗?
1 回复
wasm有一定的局限性,数据需要拷贝到wasm的内存中,还要把结果拷贝出来(当然也是直接访问Memory对象),或通过劫持fread,fwrite进行数据交换,比较繁琐。本质上也不是纯native代码, 性能还是有差距的,更类似是编译成特殊的代码,因为减少了动态性比js性能更高,但这部分性能提升的程度不一定足够弥补数据交换的性能损失。
如果只是在node中使用,可以考虑改成node的addon,可以减少拷贝等额外损失,现在napi的api已经很漂亮了。
如果c/c++写得不好 或者可以考虑rust。