Использование 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 => читает медленно
В ответ к некоторым комментариям: @AntDC - Что представляет собой действительный двойной? Я попытался заменить Parse.Double на Convert.ToDouble без улучшения.
@ Хенк Холтерман - разница во времени чтения очень заметна < 1 с для первого файла и ок. 50 секунд для второго файла. Кажется, это повторяемо.
@Slai - Я переместил оба файла в другие места, и это не повлияло на время чтения. Оба файла были экспортированы из одной и той же программы за считанные секунды.
Все ли ценные значения действительны в два раза? Double.Parse может быть медленным для недействительных удвоений. – AntDC
Укажите «действительно долгое время». Что касается другого случая. Это повторяемо? Как вы оцениваете, что вы сделали для устранения артефактов GC и I/O? –
кажется, что файл (ы) фрагментирован, что означает, что файл распространяется на нескольких частях жесткого диска, а не только на одну смежную область. Вы можете запустить Disk Defragmenter или скопировать файлы в новое место. – Slai