Привет. У меня стоит задача осуществлять многократное перемещение по файлу. Мне важна скорость доступа в связи с этим у меня возникает вопрос о том, как реализована функция fseek или её аналоги. Я не привязываюсь к конкретному языку, так как полагаю, что она реализована везде примерно одинаково. Но если это не так, то речь идёт о golang 1.6 (1.8, если хотите).
Так, например, я нахожусь в начале файла, скажем на нулевом байте. Мне необходимо прочитать последний байт файла. Можно ли оценить время доступа к последнему байту файла по сравнению с временем доступа к первому байту.
Спасибо за помощь.
Никак не можно. fseek лишь меняет переменные в памяти, и гипотетически подсказывает механизму кэширования ОС, что файл в дальнейшем будут читать вот с этого места.
Современные ОС в части доступа к файлу настолько сложны (из-за многоуровневого кэша и механизма подкачки в частности), что говорить о времени доступа можно только "в среднем", статистически.
Понятно, что наиболее быстро работа с файлом происходит, когда файл находится на отдельном диске, не фрагментирован, и обрабатывается последовательно крупными блоками.
Добиться такого счастья в реально действующей вычислительной среде малореально.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как обратиться к элементам в вызове функции, когда буду проверять, можно ли построить треугольник?
Всем доброго времени суток,отправляю ajax'ом id в таблицу на удаление,беру через инпутВыскакивает функция success,пишет,что все выполненоНО как...
написал код для валидации поля - мобильного телефона, но нашёл проблему, при заполнение например 12345 - работает отличтно, 1234п - выдает ошибку,...
Вот такая ошибка в консолиВот код фильтра