【发布时间】:2013-11-13 21:19:41
【问题描述】:
好吧,也许我只是懒惰,但这可能是互联网上的一个很酷的问题。
我知道Buffer.BlockCopy(...) 在使用byte[] 时比Array.Copy(...) 快。我正要编写一个 CloneBuffer 帮助器,它会创建一个与源数组大小相同的数组,然后使用 Buffer.BlockCopy(...) 将源数组复制到其中,但我却写道:
public void Send(byte[] data) {
// Copy caller-provided buffer
var buf = data.ToArray();
// Start async send here and return immediately
}
有谁知道ToArray() 方法是否是byte[] 的特例,或者这是否会比BlockCopy 慢?
【问题讨论】:
-
我会怀疑,但如果你好奇,你可以看看源代码,自己看看。
-
你为什么觉得有必要把
Buffer.BlockCopy放在首位? -
@EdS。在我的代码的很多地方,我新建了一个新的
byte[]的源长度,然后将源复制到新数组中。它只是一个 DRY 函数,所以我不必在需要复制缓冲区的任何地方编写 3 行代码。
标签: c# performance linq