首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >一种快速生成随机文本文件C#的方法

一种快速生成随机文本文件C#的方法
EN

Stack Overflow用户
提问于 2018-06-02 01:28:41
回答 1查看 1.5K关注 0票数 0

输出应该是一个大的文本文件,其中每一行都是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。也许有更快的方法来生成索引

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-02 01:34:43

  1. Disk是您的瓶颈,无需并行处理
  2. 在写入

之前,无需将所有内容都存储在内存中

using (var fs = File.OpenWrite(@"c:\w\test.txt"))
using (var w = new StreamWriter(fs))
{
    for (var i = 0; i < size; i++)
    {
        var text = GetRandomText(GenerateRandomNumber(1, 20));
        var number = GenerateRandomNumber(0, 5);
        var line = $"{number}. {text}";
        w.WriteLine(line);
    }
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50648405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档