我有一个代码,我必须从字节数组中读取数据到 32KB 的块中。原始 byte[] 的大小可以从 100KB 到 1MB。
现在我在循环中使用 Buffer.BlockCopy 从原始字节数组创建另一个 32KB 的字节数组。这种实现相对难以通过使用 MemoryStream 来实现,因为它提供了一种以块形式读取的好方法。
我的这部分代码经常执行。所以我需要一种可以提供最佳性能的方法。
我应该首先将字节数组转换为内存流还是直接使用 buffer.blockcopy 读取是最佳选择?
谢谢
我有一个代码,我必须从字节数组中读取数据到 32KB 的块中。原始 byte[] 的大小可以从 100KB 到 1MB。
现在我在循环中使用 Buffer.BlockCopy 从原始字节数组创建另一个 32KB 的字节数组。这种实现相对难以通过使用 MemoryStream 来实现,因为它提供了一种以块形式读取的好方法。
我的这部分代码经常执行。所以我需要一种可以提供最佳性能的方法。
我应该首先将字节数组转换为内存流还是直接使用 buffer.blockcopy 读取是最佳选择?
谢谢
我过去曾进行过基准测试,而Buffer.BlockCopy几乎总是比Array.Copy快。事实上,根据我的测试,如果您使用的缓冲区大于 ~128kb,那么memcp的执行速度最快,但当然,这都是相对的。
以下是一些微基准测试结果: