Node.js : Buffer.slice 和 Buffer.subarray 的区别
Node.js : difference between Buffer.slice and Buffer.subarray
我查看了 Node.js 缓冲区文档,但我不明白 Buffer.slice and Buffer.subarray.
之间的区别
都指向“与原来相同的内存”。
不过好像没有一个不是另一个的别名(好像是这样说的)
并且测试表明行为是相同的:
> buf=Buffer.from([0,1,2,3,4,5,6])
<Buffer 00 01 02 03 04 05 06>
> bufSlice=buf.slice(1,5)
<Buffer 01 02 03 04>
> bufSub=buf.subarray(1,5)
<Buffer 01 02 03 04>
> bufSlice
<Buffer 01 02 03 04>
> bufSub
<Buffer 01 02 03 04>
> buf[3]=0xff
255
> buf
<Buffer 00 01 02 ff 04 05 06>
> bufSub
<Buffer 01 02 ff 04>
> bufSlice
<Buffer 01 02 ff 04>
(即使 Node.js 文档中的切片示例不是很清楚)。
那么有什么区别呢?
Buffer.slice
现已弃用(自节点 16.x LTS 起)
所以现在使用 Buffer.subarray
!
我查看了 Node.js 缓冲区文档,但我不明白 Buffer.slice and Buffer.subarray.
之间的区别都指向“与原来相同的内存”。
不过好像没有一个不是另一个的别名(好像是这样说的)
并且测试表明行为是相同的:
> buf=Buffer.from([0,1,2,3,4,5,6])
<Buffer 00 01 02 03 04 05 06>
> bufSlice=buf.slice(1,5)
<Buffer 01 02 03 04>
> bufSub=buf.subarray(1,5)
<Buffer 01 02 03 04>
> bufSlice
<Buffer 01 02 03 04>
> bufSub
<Buffer 01 02 03 04>
> buf[3]=0xff
255
> buf
<Buffer 00 01 02 ff 04 05 06>
> bufSub
<Buffer 01 02 ff 04>
> bufSlice
<Buffer 01 02 ff 04>
(即使 Node.js 文档中的切片示例不是很清楚)。
那么有什么区别呢?
Buffer.slice
现已弃用(自节点 16.x LTS 起)
所以现在使用 Buffer.subarray
!