История изменений
Исправление Deleted, (текущая версия) :
Если произвольное значение? Оно указано в файл-индексе.
На шпиндельных дисках seek() может быть не такой уж и быстрый. Физически seek-и бывают разные, короткие и длинные, в дальнее место диска. Вот здесь есть некоторые цифры https://en.wikipedia.org/wiki/Hard_disk_drive_performance_characteristics
Обычно операционная система делает так называемый read-ahead, т.е. предполагается что данные после позиционирования будут читаться линейно, можно немного прочитать лишнего и подержать в кэше. Это поведение настраивается.
Если файл не очень большой и нужно читать и писать короткие (меньше нескольких килобайт) данные в разные места, mmap()* с большой вероятностью будет эффективнее чем позиционироваться и читать вручную
UPD: * mmap() на весь файл, конечно
Исходная версия Deleted, :
Если произвольное значение? Оно указано в файл-индексе.
На шпиндельных дисках seek() может быть не такой уж и быстрый. Физически seek-и бывают разные, короткие и длинные, в дальнее место диска. Вот здесь есть некоторые цифры https://en.wikipedia.org/wiki/Hard_disk_drive_performance_characteristics
Обычно операционная система делает так называемый read-ahead, т.е. предполагается что данные после позиционирования будут читаться линейно, можно немного прочитать лишнего и подержать в кэше. Это поведение настраивается.
Если файл не очень большой и нужно читать и писать короткие (меньше нескольких килобайт) данные в разные места, mmap() с большой вероятностью будет эффективнее чем позиционироваться и читать вручную