Вступить в клуб →
средняявопросPython: типы, ООП и структуры данных

Сборка отчёта на 200 тысяч строк идёт минуты вместо секунд

Выгрузка собирается так:

report = ""
for row in rows:            # rows — около 200 000 строк
    report += ";".join(row) + "\n"

Замена на "\n".join(";".join(row) for row in rows) ускорила сборку в десятки раз. Почему?

  • Строка неизменяема: каждое += копирует весь накопленный текст заново
  • join выполнен на C, а цикл на Python — отсюда постоянная разница примерно в 10%
  • При += строка каждый раз перекодируется из UTF-8 и обратно
  • Дело не в коде: время уходит на запись результата в файл, а не на сборку

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела