C/C++

Подгрузка файлов по кусочкам в играх более выгодна чем если бы это был один файл?

Чтение файла выполняется в потоке, под который система выделяет буфер ограниченного размера. Менеджер памяти в ОС Windows, по умолчанию, каждому процессу выделяет программный стек размером 2 мегабайта, а также выделяет память в куче по запросу кусками в 4 килобайта. Такой же размер, по умолчанию, кластера файловой системы, который предлагается ОС Windows при форматировании устройства хранения данных. Совпадение? Не думаю! Если файл представляет собой файл-контейнер (файловый архив), например, как видеофайл, то его грузят частями. Потому как это набор картинок, которые отображаются последовательно с заданной частотой. До тех пока файловый поток открыт для чтения, процесс владеет им как ресурсом, независимо от того читает он его в данный момент или поставил на паузу. Читать один и тот же файл могут несколько потоков, писать (т. е. сохранять данные) только один. Файл на диске, этот же файл, но загруженный в оперативную память и файловый поток с которым в данный момент работает процесс – это разные вещи (разная память). Сколько процессов читают в данный момент времени один и тот же файл известно только операционной системе. Это могут быть пользователи корпоративной сети, получившие доступ через терминал, антивирусная программа, программа резервного копирования, какие-нибудь службы, выполняющие поиск и сравнение, архиваторы, файловые менеджеры и т. д. А в играх выгодно отформатировать диск размером кластера в 32 килобайта. Только это должен быть не системный диск. Скорость чтения файлов с такого диска будет стабильно предельно высокой. Но для SSD это будет незаметно. Что вы понимаете под термином «выгодно» не совсем понятно? Но в любом случае всем рулит операционная система, она же расставляет приоритеты.
Александр Черчук
Александр Черчук
89 359
Лучший ответ
Джон Кармак (и много кто ещё) был сторонником загрузки одним файлом. В папке Quake был большой архив с ресурсами, который игра распаковывала. Потом в Rage создал технологию мегатекстура. Но как-то в массы оно не пошло.
Иван Григорьев
Иван Григорьев
26 556
Не всегда. Зависит от ситуации.
По-разному