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

本文关键字:读取 取时间 文本 文件 数据 | 更新日期: 2023-09-27 18:17:44

使用c#,我正在从文本文件读取数据到2D列表中进行进一步处理。每个文件有256个双精度,空格以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 =>读取慢

在回答一些评论:什么构成有效的双精度?我试着替换Parse。Double和Convert。翻倍,没有进步。

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

@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()));
    }
}