c# - 如果它包含 100000 行数据,如何在 C# 中编写超快的 ascii 文件?

标签 c#

我有一个代码可以从 C# 中的随机类生成随机字符串和数字。然后将其写入文本文件。我怎样才能提高性能? 代码如下:

    int i = 0;
    Record[] rec = new Record[100000];
    Class1 cl = new Class1();
    Random random = new Random();
    while (i < 100000)
    {
        rec[i].num1 = random.Next();
        rec[i].num2 = random.Next();
        rec[i].mult = rec[i].num1 * rec[i].num2;
        rec[i].rel = true;
        rec[i].name = cl.generateRandomString(1);
        rec[i].var_set = cl.generateRandomString(2);          
        using (StreamWriter writer = new StreamWriter("important.txt", true))
        {

            writer.Write(rec[i].name);
            writer.Write("   ");
            writer.Write(rec[i].var_set);
            writer.Write("   ");
            writer.Write(rec[i].num1);
            writer.Write("   ");
            writer.Write(rec[i].num2);
            writer.Write("   ");
            writer.Write(rec[i].mult);
            writer.Write("   "); 
            writer.WriteLine(rec[i].rel);
        }
        i++;

最佳答案

根据您在@Ben 的评论中提供的代码,我得到了您正在使用的代码。

Record[] rec = new Record[100000]; 
Class1 cl = new Class1(); 
Random random = new Random(); 
while (i < 100000) 
{ 
    rec[i].num1 = random.Next();
    rec[i].var_set = cl.generateRandomString(2);
    using (StreamWriter writer = new StreamWriter("important.txt", true)) 
    { 
        writer.Write(rec[i].name); 
        writer.Write(" "); 
    } 
    i++;
}

我看到的最大问题是您要为循环的每次迭代打开 streamwriter。您可能希望将代码更改为类似这样的内容,以便文件只打开一次。

int i = 0;
Record[] rec = new Record[100000]; 
Class1 cl = new Class1(); 
Random random = new Random(); 
StreamWriter sr = new StreamWriter("important.txt", true);

try
{
    while (i < 100000) 
    { 
        rec[i].num1 = random.Next();
        rec[i].var_set = cl.generateRandomString(2);
        sr.Write(rec[i].name); 
        sr.Write(" "); 
        i++;
    }
}
finally
{
    sr.Close();
}

关于c# - 如果它包含 100000 行数据,如何在 C# 中编写超快的 ascii 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6863406/

相关文章:

c# - 导入 sqlite 脚本以在 C# 和 t 中创建数据库

c# - 使用 fakexrmeasy 创建链接数据

c# - 哪个字符串操作更好?

c# - 如何在C#中使用定界符?

c# - 将数据传递到 Task Continuation

c# - 是否可以在派生类中设置基类中的私有(private) setter 而不公开?

C#:将 float 表达式转换为 int 时结果错误

c# - 当第二个字符串较长时奇怪的字符串排序

c# - 解析 avcC 盒内 SPS 的计时信息时出现问题

c# - C#中 'volatile'关键字的用途是什么