Я импортирую большой файл CSV в GNU Octave, выполняю некоторые простые операции с данными и создаю несколько графиков. В файле около 6,5 миллионов строк. Я ожидал, что процесс чтения файла займет около двух-трех часов, потому что, по моему опыту, именно столько времени обычно требуется для создания файла такого размера. Добавлен счетчик статуса, когда он не завершается и обнаруживает, что он замедляется при чтении; через 12 часов только на линии 1,5 миллиона и движется ползком. Однако, согласно Resource Monitor, проблем с памятью нет. Есть ли более эффективный способ чтения кода, чем тот, который я привел ниже? Нужно ли мне делать что-то особенное, чтобы выделить память для процесса, чтобы он не замедлялся? Это l oop, которое читается в CSV. Это время l oop, которое сканирует CSV по одной строке, извлекает нужные мне столбцы и заканчивается, когда достигает первой пустой строки:
% Process File
F=1;
while 1
% Status Counter
printf ("Status: %d \r", F);
fflush (stdout);
F=F+1;
% Read first unread line
line = fgetl(fileID);
% Exit while loop if line is empty
if ~ischar(line)
break;
endif
% Translate Line
Bank = textscan (line, '%f', 'Delimiter', ',');
Bank = cell2mat (Bank);
Bank = transpose (Bank);
% Append Bank to Output
Output = [Output; Bank(1, 1:9), Bank(1, 13:14), Bank(1, 20:21)];
endwhile