io有什么区别。copy 和 io.复制缓冲区?

What's the difference between io.Copy and io.CopyBuffer?

提问人:zuzuleinen 提问时间:10/1/2022 更新时间:10/2/2022 访问量:715

问:

在io的文档中。CopyBuffer 它指出:

CopyBuffer 与 Copy 相同,只是它通过 提供的缓冲区(如果需要),而不是分配一个 临时的。

这是否意味着将首先复制到缓冲区,然后复制到目标,从而减少对源写入的调用?io.CopyBuffer

IO

评论

3赞 JimB 10/1/2022
CopyBuffer 允许您分配自己的缓冲区。否则,它与 Copy 相同。如果查看 Copy,它只是调用 CopyBuffer
0赞 zuzuleinen 10/1/2022
它有什么好处?它看起来像io。copy 将有一个缓冲区或 32768(使用 buf nil 调用 copyBuffer)
2赞 colm.anseo 10/2/2022
它允许您选择自己的缓冲区大小。 默认情况下使用 32K 缓冲区。如果您知道您的副本会很大,则更大的缓冲区可能性能更高。io.Copy
0赞 zuzuleinen 10/2/2022
@colm.anseo 我想这也是相反的。如果我知道我的副本更小,我可以使用比 32k 更小的缓冲区,从而减少为我的副本分配的内存
2赞 Cerise Limón 10/2/2022
除了允许调用方控制缓冲区的大小外,调用方还可以使用单个缓冲区执行多个复制操作。

答:

3赞 anon 10/2/2022 #1

CopyBuffer 允许您分配自己的缓冲区。否则,它与 复制。如果查看 Copy,它只是调用 CopyBuffer。

CopyBuffer 允许您选择自己的缓冲区大小。io。默认情况下,复制使用 32K 缓冲区。如果您知道您的副本会很大,则更大的缓冲区可能会更多 性能。除了允许调用方控制 缓冲区,调用方可以使用单个缓冲区执行多个复制操作。