Мне нужно создать очень большой текстовый файл. Каждая строка имеет простой формат:
Seq_num<SPACE>num_val
12343234 759
Предположим, что я собираюсь создать файл со 100 миллионами строк. Я попробовал 2 подхода и, на удивление, они дают очень разную производительность.
-
Для циклы более 100 м. В каждом цикле я делаю короткую строку
seq_num<SPACE>num_val
, а затем пишу это в файл. Этот подход требует много времени.## APPROACH 1 for seq_id in seq_ids: num_val=rand() line=seq_id+' '+num_val data_file.write(line)
-
Для циклы более 100 м. В каждом цикле я делаю короткую строку
seq_num<SPACE>num_val
, а затем добавляю ее в список. Когда цикл завершается, я перебираю элементы списка и записываю каждый элемент в файл. Этот подход занимает гораздо меньше времени.## APPROACH 2 data_lines=list() for seq_id in seq_ids: num_val=rand() l=seq_id+' '+num_val data_lines.append(l) for line in data_lines: data_file.write(line)
Обратите внимание, что:
- Подход 2 имеет 2 контура вместо 1 циклы.
- Я пишу в файл в цикле как для подхода 1, так и для подхода 2. Таким образом, этот шаг должен быть одинаковым для обоих.
Поэтому подход 1 должен занимать меньше времени. Любые намеки на то, что мне не хватает?