繁体   English   中英

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

[英]How to get best performance while reading a byte array into chunks? MemoryStream or Buffer.BlockCopy?

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

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

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

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

谢谢

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

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

在此输入图像描述

但是在一天结束的时候: “如果你有两匹马,你想知道两匹中的哪一匹更快,那么你的马匹就会更快。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM