如何用垃圾填充字节数组? [英] How to fill byte array with junk?

查看:97
本文介绍了如何用垃圾填充字节数组?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用这个:

byte[] buffer = new byte[10240];

据我了解,这会初始化10kb的缓冲区数组,其中填充了0.

As I understand this initialize the buffer array of 10kb filled with 0s.

每次用垃圾数据填充(或初始化)该数组的最快方法是什么?

我需要使用该数组> 5000次,并每次用不同的垃圾数据填充它,这就是为什么我正在寻找一种快速的方法来做到这一点.数组大小每次也必须更改.

I need to use that array like >5000 times and fill it every time with different junk data, that's why I am looking for a fast method to do it. The array size will also have to change every time.

推荐答案

如果您对数据是随机的但对来自随机种子缓冲区的数据感到满意,则可以执行以下操作:

If you are happy with the data being random, but being created form a random seed buffer, then you could do the following:

public class RandomBufferGenerator
{
    private readonly Random _random = new Random();
    private readonly byte[] _seedBuffer;

    public RandomBufferGenerator(int maxBufferSize)
    {
        _seedBuffer = new byte[maxBufferSize];

        _random.NextBytes(_seedBuffer);
    }

    public byte[] GenerateBufferFromSeed(int size)
    {
        int randomWindow = _random.Next(0, size);

        byte[] buffer = new byte[size];

        Buffer.BlockCopy(_seedBuffer, randomWindow, buffer, 0, size - randomWindow);
        Buffer.BlockCopy(_seedBuffer, 0, buffer, size - randomWindow, randomWindow);

        return buffer;
    }
}

我发现它大约快60-70倍,然后每次都从头开始生成一个随机缓冲区.

I found it to be approx 60-70 times faster then generating a random buffer from scratch each time.

              START: From seed buffer.
00:00:00.009  END  : From seed buffer. (Items = 5,000; Per Second = 500,776.20)
              START: From scratch.
00:00:00.604  END  : From scratch. (Items = 5,000; Per Second = 8,276.95) 

更新

通常的想法是一次创建一个RandomBufferGenerator,然后使用该实例生成随机缓冲区,例如:

The general idea is to create a RandomBufferGenerator once, and then use this instance to generate random buffers, e.g.:

RandomBufferGenerator generator = new RandomBufferGenerator(MaxBufferSize);

byte[] randomBuffer1 = generator.GenerateBufferFromSeed(10 * 1024);
byte[] randomBuffer2 = generator.GenerateBufferFromSeed(5 * 1024);
...

这篇关于如何用垃圾填充字节数组?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆