回答
在node.js中既Buffer
和WebAssembly Memory
对象具有属性buffer
是ArrayBuffer
类型本身被定义为Typed Arrays in ECMAScript/JavaScript 2015一部分。
node --version
v8.1.2
node
> mem = new WebAssembly.Memory({initial: 10});
Memory {}
> buf = new Buffer("abc")
<Buffer 61 62 63>
> mem.buffer
ArrayBuffer { byteLength: 655360 }
> buf.buffer
ArrayBuffer { byteLength: 8192 }
一个普通的ArrayBuffer对象只是一个字节流的容器。为了访问和使用它,你必须将它打包/转换为Typed Array(例如Uint8Array,DataView等),node.js Buffer或WebAssembly Memory。
tks为答案@ kanaka。我不知道下面都有一个ArrayBuffer。那么,使用WebAssembly Memory还是有意义的,或者直接使用ArrayBuffer over node.js Buffer? –
这真的取决于你想要完成的事情。你可以非常有效地在类型数组之间进行复制(特别是如果你使用'set'方法),所以根据不同的目的使用不同的类型并根据需要进行转换/复制可能不是一个很大的性能问题,除非你正在做的是性能敏感的。 – kanaka
一个显着差异是WebAssembly.Memory
可通过Memory.prototype.grow
调整大小,而Buffer
不可以。
另一个是WebAssembly.Memory
的设计,使硬件内存保护可以用来消除动态范围检查,因此它的长度被钳位到64kb的倍数。 Buffer
可以有任意的字节长度。
- 1. webassembly数据类型中的uint32和i32有什么区别?
- 2. Opera Unite和Node.js有什么区别?
- 3. Node.js中util.error和console.error有什么区别?
- 4. jQuery和Node.js有什么区别?
- 5. Node.js的http.Server和http.createServer有什么区别?
- 6. node.js与meteor.js有什么区别?
- 7. 有什么区别`和$(Bash中有什么区别?
- 8. 有什么区别? :和||
- 9. &&和||有什么区别?
- 10. “/”和“/ *”有什么区别?
- 11. 有什么区别:。!和:r!?
- 12. ==和===有什么区别?
- 13. Appender和〜有什么区别?
- 14. $ @和$ *有什么区别?
- 15. is和=有什么区别?
- 16. #.00和#。##有什么区别?
- 17. `==`和`is`有什么区别?
- 18. '=='和'==='有什么区别?
- 19. /和/#/有什么区别?
- 20. | 0和~~有什么区别?
- 21. `&`和`ref`有什么区别?
- 22. ==和===有什么区别?
- 23. ==和===有什么区别?
- 24. `{}`和`[]`有什么区别?
- 25. JavaScript和=== ===有什么区别?
- 26. difftime和' - '有什么区别?
- 27. =和==有什么区别?
- 28. toGMTstring()和toUTCstring()有什么区别?
- 29. 在PHP中的内存映射文件,有什么区别php:// temp和php:// memory
- 30. connect framework和socket.io有什么区别?
这个问题就像问沃尔沃手套箱和宝马发动机罩之间的区别是什么。当然,都包含东西。 –