Привет. У меня стоит задача осуществлять многократное перемещение по файлу. Мне важна скорость доступа в связи с этим у меня возникает вопрос о том, как реализована функция fseek или её аналоги. Я не привязываюсь к конкретному языку, так как полагаю, что она реализована везде примерно одинаково. Но если это не так, то речь идёт о golang 1.6 (1.8, если хотите).
Так, например, я нахожусь в начале файла, скажем на нулевом байте. Мне необходимо прочитать последний байт файла. Можно ли оценить время доступа к последнему байту файла по сравнению с временем доступа к первому байту.
Спасибо за помощь.
Никак не можно. fseek лишь меняет переменные в памяти, и гипотетически подсказывает механизму кэширования ОС, что файл в дальнейшем будут читать вот с этого места.
Современные ОС в части доступа к файлу настолько сложны (из-за многоуровневого кэша и механизма подкачки в частности), что говорить о времени доступа можно только "в среднем", статистически.
Понятно, что наиболее быстро работа с файлом происходит, когда файл находится на отдельном диске, не фрагментирован, и обрабатывается последовательно крупными блоками.
Добиться такого счастья в реально действующей вычислительной среде малореально.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости