从文本文件中读取双重数据 - 读取时间的差异

Read double data from a text file - differences in read time

我正在使用 C# 将文本文件中的数据读入二维列表以供进一步处理。每个文件都是 256 个双精度数,space 以 256 行分隔,每行都被读入一个双精度数列表,每个列表都被添加到一个行列表中。所有文件都有 256x256 = 65,536 个数据点。

我有读取文件的代码,并且对某些文件运行良好,但对其他文件则需要很长时间。由于所有文件都以相同的方式格式化并包含相同数量的数据点,我不明白读取时间的差异,有人有什么想法吗?

如何加快文件 2 的读取时间?

这是我使用的代码:

        private Data ReadData (string name, string file)
        {
            List<List<Double>> data_points = new List<List<Double>>();

            String input = File.ReadAllText( file );

            foreach (string row in input.Split('\n'))
            {
                List<Double> line_list = new List<double>();
                foreach (string col in row.Trim().Split(' '))
                {
                    if(row != "")
                    {
                    line_list.Add(double.Parse(col.Trim()));
                    }

                }
                if(line_list.Count > 1)
                {
                data_points.Add(line_list);
                }
            }

            Data temp_data = new Data(name, data_points);
            return temp_data;
        }

示例文本文件在这里:

https://www.dropbox.com/s/diindi2qjlgoxep/FOV2_t1.txt?dl=0 => 阅读速度快

https://www.dropbox.com/s/4xrgdz0nq24ypz8/FOV2_t2.txt?dl=0 => 读取速度慢

回答一些评论: @AntDC - 什么构成有效的替身?我尝试用 Convert.ToDouble 替换 Parse.Double 但没有任何改进。

@Henk Holterman - 读取时间的差异非常明显 <1s 第一个文件和大约。第二个文件50s。它似乎是可重复的。

@Slai - 我将两个文件都移到了其他位置,这对阅读时间没有影响。这两个文件都是在几秒钟内从同一程序导出的。

性能方面你可以优化你的代码,而不是读取整个文件然后拆分它。逐行阅读。

List<Double> line_list = new List<double>();
foreach (string line in File.ReadLines("c:\file.txt"))
{
    string[] rows = line.Trim().Split(' ');

    foreach(string el in rows)
    {
        line_list.Add(double.Parse(el.Trim()));
    }
}