生成随机文本文件的更快方法 C#

输出应该是一个大文本文件,其中每一行的格式为 Number.String,文本是随机的:


347. Bus

20175. Yes Yes

15. The same

2. Hello world

178. Tree

文件大小必须以字节为单位指定。对生成大约 1000MB 或更多文件的最快方法感兴趣。


有我的生成随机文本的代码:


public string[] GetRandomTextWithIndexes(int size)

    {

        var result = new string[size];


        var sw = Stopwatch.StartNew();

        var indexes = Enumerable.Range(0, size).AsParallel().OrderBy(g => GenerateRandomNumber(0, 5)).ToList();

        sw.Stop();

        Console.WriteLine("Queue fill: " + sw.Elapsed);


        sw = Stopwatch.StartNew();

        Parallel.For(0, size, i =>

        {

            var text = GetRandomText(GenerateRandomNumber(1, 20));

            result[i] = $"{indexes[i]}. {text}";

        });


        sw.Stop();

        Console.WriteLine("Text fill: " + sw.Elapsed);


        return result;

    }


public string GetRandomText(int size)

    {

        var builder = new StringBuilder();


        for (var i = 0; i < size; i++)

        {

            var character = LegalCharacters[GenerateRandomNumber(0, LegalCharacters.Length)];

            builder.Append(character);

        }


        return builder.ToString();

    }


private int GenerateRandomNumber(int min, int max)

    {

        lock (_synlock)

        {

            if (_random == null)

                _random = new Random();

            return _random.Next(min, max);

        }

    }

我不知道如何使用字符串的大小而不是 MB 的大小来处理此代码。当我将 size 设置为大约 1000000000 时,我收到OutOfMemoryException. 也许有一些更快的方法来生成索引


ibeautiful
浏览 204回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP