Этот вопрос сильно зависит от вашей операционной системы и дисковой подсистемы.
Очевидно, что сам поиск будет иметь практически нулевое время, так как он просто обновляет смещение. Фактически чтение вытащит некоторые данные с диска ...
... но сколько данных зависит от многих факторов. На вашем диске есть кеш, который может иметь свой собственный размер блока и может делать что-то вроде чтения. Ваш RAID-контроллер (если есть) будет иметь свой собственный кеш, возможно, с его собственным размером блока и чтением вперед.
В вашем ядре есть кеш-страница - вся свободная оперативная память, по существу, - и она также, вероятно, будет делать что-то вроде чтения вперед. В Linux это настраивается, и ядро будет адаптировать его, основываясь на том, как выглядят последовательные ваши шаблоны доступа: вы вызывали posix_fadvise
и т. Д.
Все эти кеши означают, что если вы получаете доступ к некоторым данным, позже есть шанс, что второй доступ фактически не коснется диска.
Если у вас есть возможность кодирования, чтобы вы последовательно получали доступ к файлу, это, безусловно, будет быстрее, чем случайные чтения, особенно небольшие случайные чтения. Поиск на одном механическом диске занимает примерно 10 мс, поэтому вы можете сделать математику здесь. (Хотя поиск на твердотельном диске примерно в 100 раз быстрее.)
Большие чтения, как правило, лучше, чем небольшие чтения ... Хотя данные обработки несколько килобайт за раз могут быть быстрее, чем большие блоки, если это позволяет обрабатывать оставаться в кеше.
Короче говоря, вам нужно будет предоставить более подробную информацию о вашей системе и вашем приложении, чтобы получить правильный ответ, и даже тогда наиболее вероятный ответ «сравнивает его».
Позиция - это просто указатель, изменение его на самом деле не будет читать содержимое файла. – WiSaGaN
Ах дерьмо. Хорошо, позвольте мне сделать мой вопрос более разумным ... – Brian
wait ... no У меня была веская причина для этого. – Brian