Используя С#, я читаю данные из текстовых файлов в 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 - я переместил оба файла в другие места, и это не повлияло на время чтения. Оба файла были экспортированы из одной и той же программы с интервалом в несколько секунд.
Data
. Есть ли какие-либо файлы в общей папке или что-то связанное с конструктором классаData
? - person Slai   schedule 14.11.2016Data
конструктор) - person Slai   schedule 15.11.2016