我有一个代码,我必须从字节数组中读取数据到32KB的块。原始字节[]的大小可以从100KB到1MB。
现在我在循环中使用Buffer.BlockCopy从原始字节数组创建另一个32KB的字节数组。通过使用MemoryStream,这种实现相对难以实现,因为它提供了一种很好的读取块的方法。
这部分代码经常执行。所以我需要一种可以提供最佳性能的方法。
我应该首先将字节数组转换为内存流还是直接用buffer.blockcopy读取是最佳选择?
由于
答案 0 :(得分:2)
我过去曾进行过基准测试, Buffer.BlockCopy 几乎总是比 Array.Copy 更快。事实上,根据我的测试,如果你使用的缓冲区大于~128kb,那么memcp执行速度最快,但当然,这都是相对的。
以下是一些微观基准测试结果:
但是在一天结束时: "If you have two horses and you want to know which of the two is the faster then race your horses. "