2015-06-03 2 views
-1

Я читаю файл со строками и выводя файл на его основе с некоторыми изменениями. Быстрее ли читать одну строку, вносить изменения и выводить ее сразу, или лучше читать несколько строк, вносить изменения и выписывать их сразу. Если быстрее записать их в пакетах, как оптимизировать размер партии, чтобы быть быстрее, поскольку я полагаю, что сохранение строки или список миллионов строк может замедлить работу без необходимости.Как узнать, сколько строк для пакетной записи питона

+1

Почему бы не попробовать все по-другому и сами увидеть? –

+0

http://www.dabeaz.com/generators/Generators.pdf поможет в значительной степени –

+0

Вне темы: слишком широкий. Ответы могут стать слишком теоретическими и ручными, чтобы быть полезными. Вам придется самому профилировать его, как сказал первый комментатор, здесь есть много сценариев. –

ответ

0

Просто сделайте это один за другим, ваш код будет намного чище и проще рассуждать об этом. По умолчанию все IO-файлы буферизуются в любом случае, что означает, что фактические записи будут очищаться только тогда, когда базовый буфер заполнен

0

Напишите код для его проверки!

Как я уже говорил в своем предыдущем вопросе, ваша ОС будет выполнять буферизацию и кеширование, поэтому не каждый вызов чтения или записи приведет к доступу к диску. Однако системные вызовы являются медленнее, чем манипуляции с списками, поэтому вы получите более высокую скорость работы с блоками данных разумного размера, например 64 КБ. Более крупные блоки, до 1 МБ, могут быть немного быстрее, в зависимости от устройства (например, традиционный магнитный HD против SSD), но IME 64kB, как правило, достаточно.

Но определенно выполните некоторые тесты, прежде чем переходить к серьезной реструктуризации существующего кода. Определите, что ввод/вывод на самом деле является узким местом для вашей программы, прежде чем вы пытаетесь улучшить скорость ввода-вывода. Как сказал Кнут, преждевременная оптимизация - это корень всего зла.

Смежные вопросы