从文本文件中读取双数据-读取时间的差异
本文关键字:读取 取时间 文本 文件 数据 | 更新日期: 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()));
}
}