node.js Buffer和WebAssembly Memory有什么区别?
我想知道是否有可能用WebAssembly 内存replaceNode.js 缓冲区内存分配?
如果是的话,有什么好处吗?
在node.js中, Buffer
和WebAssembly Memory
对象都有一个ArrayBuffer
types的buffer
属性,它本身被定义为ECMAScript / JavaScript 2015中的Typed Arrays的一部分。
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对象只是一个字节stream的容器。 为了访问和使用它,你必须把它转换成一个Typed Array(例如Uint8Array,DataView等等),一个node.js缓冲区或WebAssembly Memory。
一个显着的区别是WebAssembly.Memory
可以通过Memory.prototype.grow
进行调整,而Buffer
不是。
另一个是WebAssembly.Memory
的devise,使硬件内存保护可以用来消除dynamic范围检查,因此其长度被钳位到64kb的倍数。 Buffer
可以有任意的字节长度。