Wenn Sie zufrieden sind mit den Daten zufällig sind, sondern bilden einen Zufallsstartpuffer erstellt wird, dann könnten Sie wie folgt vorgehen:
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;
}
}
ich es ca. 60-70 mal schneller als zu erzeugen erwiesen ein zufälliger Puffer von Grund auf neu.
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)
aktualisieren
Die allgemeine Idee einmal eine RandomBufferGenerator zu schaffen, und dann diese Instanz verwenden, um Zufalls Puffer zu erzeugen, zB:
RandomBufferGenerator generator = new RandomBufferGenerator(MaxBufferSize);
byte[] randomBuffer1 = generator.GenerateBufferFromSeed(10 * 1024);
byte[] randomBuffer2 = generator.GenerateBufferFromSeed(5 * 1024);
...
Haben die Junk-Daten zufällig zu sein brauchen ? Oder einfach jedes Mal anders? –
Bitte kopieren Sie keine Tags ("C#") im Titel. Verwenden Sie "csharp" auch nicht als Tag. Die Tatsache, dass es nur in 4 Fragen verwendet wird, sollte ein Hinweis darauf sein, es nicht zu benutzen. –