Производительность встраивания файлов ресурсов в исполняемый файл - PullRequest
4 голосов
/ 27 мая 2011

Недавно я нашел здесь , как встроить мои файлы ресурсов в исполняемый файл.Существует также метод xxd.Учитывая эту новую найденную игрушку, которую я сначала использовал для встраивания текста шейдеров GLSL в свою игру, теперь я хочу встроить каждый файл ресурсов, необходимый для игры.Данные трехмерной сетки, но прежде чем это число увеличится, я хотел бы знать, сколько данных возможно внедрить в исполняемый файл?Если бы я поместил пару гигабайт текстурных данных в это, это было бы хорошо?Каковы ограничения производительности при использовании этой функции?

1 Ответ

0 голосов
/ 27 мая 2011

Недостатком этого метода распределения ресурсов является то, что все ресурсы будут присутствовать в виртуальной памяти на протяжении всего времени вашего приложения.

Например, если в вашей игре 10 уровней, используется более распространенныйрешение для хранения на основе файлов, вы будете загружать данные только для того уровня, на котором вы собираетесь играть.Загружая все игровые данные во время выполнения, вы выделяете больше оперативной памяти, чем необходимо.Решение, которое использует оптимально минимальный объем ОЗУ, будет загружать ресурсы, которые ему необходимы, только на тот период, в котором они необходимы.

Однако, если вы используете решение для хранения на основе файлов и загружаете их всев начале выполнения ваше использование ОЗУ будет таким же, как у статически распределенного метода ресурсов.

Кроме того, если ваша целевая машина представляет собой простую игровую консоль, которая не выполняет многозадачность, то вы обычно можете свободно использовать доступныересурсы любым способом, который подходит вам лучше всего.Не требуется «играть хорошо», поскольку обычно одновременно запускается только одна игра.

Если вы работаете с несколькими мегабайтами в современной системе, штраф незначителен, но вы теряете производительность, когда выЧтобы получить доступ к нескольким гигабайтам данных, вы будете создавать ненужную нагрузку на доступные ресурсы памяти системы.

edit: обязательно посмотрите пункты, поднятые в комментариях

...