Как работать с большим файлом, если после чтения одной строки нужно перейти к данным в другом конце файла? Что влияет на производительность?

Используйте позиционирование seek и, при повторяющихся обращениях, индекс смещений. Скорость зависит от характера доступа, носителя, кеша ОС, кодировки и формата файла.

Короткий ответ

Что ответить на собеседовании

Используйте позиционирование seek и, при повторяющихся обращениях, индекс смещений. Скорость зависит от характера доступа, носителя, кеша ОС, кодировки и формата файла.

Подробный разбор

Ответ с пояснениями

Используйте позиционирование seek и, при повторяющихся обращениях, индекс смещений. Скорость зависит от характера доступа, носителя, кеша ОС, кодировки и формата файла.

Для бинарного файла можно хранить точные byte offsets и читать нужный участок напрямую. В текстовом режиме произвольное смещение опасно из-за кодировки и преобразования переносов: используйте поддерживаемые позиции tell либо работайте с байтами и аккуратным декодированием. Сжатый поток часто не поддерживает дешёвый переход к произвольному месту. Частые случайные чтения на HDD намного дороже последовательных; SSD и page cache меняют картину. Если это регулярный сценарий, индексированный формат или БД могут быть уместнее плоского файла.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее