回答
在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有什麼區別?
這個問題就像問沃爾沃手套箱和寶馬發動機罩之間的區別是什麼。當然,都包含東西。 –