gpt4 book ai didi

c# - 在 C# 中追加两个或多个字节数组

转载 作者:IT王子 更新时间:2023-10-29 04:10:42 30 4
gpt4 key购买 nike

有没有最好的(见下文)方法在 C# 中追加两个字节数组?

假装我有完全的控制权,我可以使第一个字节数组足够大以在末尾容纳第二个字节数组并使用 Array.CopyTo功能。或者我可以遍历单个字节并进行分配。

有没有更好的方法?我无法想象像将字节数组转换为字符串并将它们连接起来再将它们转换回来这样的操作会比上述任何一种方法都更好。

就最佳/更好而言(按顺序):

  1. 最快
  2. 最少的 RAM 消耗

一个限制是我必须在 .NET 2.0 框架中工作。

推荐的两个选择是 MemoryStream 和 BlockCopy。我已经运行了 10,000,000 次循环的简单速度测试 3 次并得到以下结果:

3 次 10,000,000 次循环的平均毫秒数:

  • BlockCopy时间:1154,范围13毫秒
  • MemoryStream GetBuffer时间:1470,范围14毫秒
  • MemoryStream ToArray 时间:1895,范围为 3 毫秒
  • CopyTo时间:2079,范围19毫秒
  • 逐字节时间:2203,范围10毫秒

List 的结果 AddRange超过 1000 万个循环:列表 时间:16694

相对 RAM 消耗(1 是基线,越高越差):

  • 逐字节:1
  • block 复制:1
  • 复制到:1
  • 内存流获取缓冲区:2.3
  • MemoryStream ToArray:3.3
  • 列表 :4.2

测试表明,一般来说,除非你正在做大量的字节拷贝[我就是],查看字节拷贝是不值得关注的[例如。 1000 万次运行产生的差异高达 1.1 秒]。

最佳答案

你想要BlockCopy

根据 this blog post它比 Array.CopyTo 更快。

关于c# - 在 C# 中追加两个或多个字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/895120/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com