如何在将字节数组读入块时获得最佳性能? MemoryStream还是Buffer.BlockCopy?

时间:2013-07-19 04:17:14

标签: c# performance bytearray memorystream

我有一个代码,我必须从字节数组中读取数据到32KB的块。原始字节[]的大小可以从100KB到1MB。

现在我在循环中使用Buffer.BlockCopy从原始字节数组创建另一个32KB的字节数组。通过使用MemoryStream,这种实现相对难以实现,因为它提供了一种很好的读取块的方法。

这部分代码经常执行。所以我需要一种可以提供最佳性能的方法。

我应该首先将字节数组转换为内存流还是直接用buffer.blockcopy读取是最佳选择?

由于

1 个答案:

答案 0 :(得分:2)

我过去曾进行过基准测试, Buffer.BlockCopy 几乎总是比 Array.Copy 更快。事实上,根据我的测试,如果你使用的缓冲区大于~128kb,那么memcp执行速度最快,但当然,这都是相对的。

以下是一些微观基准测试结果:

enter image description here

但是在一天结束时: "If you have two horses and you want to know which of the two is the faster then race your horses. "