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

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