Почему большие файлы лучше, чем маленькие файлы для консолей?

18

Почему разработчики консольных игр используют большие файлы для хранения игровых данных вместо маленьких файлов, как на ПК? Меньше потоков в памяти? Вам нужно получить доступ к дереву файлов много раз? Другая причина?

Triang3l
источник
Возможно, аналог в веб-мире: CSS Sprites
Ник Т
CSS-спрайты - неприятный недостаток использования старого ржавого HTTP 1.1, который, по-видимому, делает серверы неспособными отправлять много ресурсов с помощью одного соединения. Я желаю нового стандарта.
Кос
1
@Kos Ваше желание было предоставлено , хотя , к сожалению , пока не реализован.
Phihag
Спасибо за это! Я хочу испечь им торт, чтобы они работали быстрее.
Кос

Ответы:

37

Наличие одного большого файла имеет несколько преимуществ для производительности, независимо от платформы. Многие игры для ПК тоже используют большие файлы.

  • Вы можете вручную кэшировать смещение каждого файла в большом файле, чтобы избежать необходимости чтения записей каталога файловой системы (что может включать в себя несколько поисков для каждого открытого файла, если вы пропустите кеш).

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

  • Сжатие данных обычно более эффективно для одного большого файла, чем для отдельных файлов.

Обратите внимание, что избегание поисков очень эффективно для ускорения времени загрузки. Типичный жесткий диск может иметь время поиска 10 мс и скорость передачи 100 МБ / с. Допустим, вам нужно загрузить 100 шейдерных файлов общим объемом 1 МБ. Если вам нужно выполнить поиск каждого из них, потребуется всего одна секунда, чтобы загрузить их все. С одним поиском вы смотрите на 20 мс, чтобы загрузить все из них.

Конечно, не все консоли имеют жесткие диски, а оптические приводы имеют еще худшую производительность поиска, поэтому этим шейдерам может потребоваться 5 или более секунд для загрузки DVD при поиске. Также у консолей гораздо меньше памяти для использования в качестве кеша, чем у ПК, поэтому они склонны загружать данные чаще.

Адам
источник
9
Очень хороший ответ. Кстати, с примерами поиска одного файла против нескольких файлов.
Уильям Маригер
1
Кроме того, для конкурирующих онлайн-игр гораздо, намного быстрее (и используется намного меньше дискового пространства) проверить, что игрок не вмешался в один огромный файл, чем для индивидуальной проверки тысяч маленьких файлов.
Тревор Пауэлл
Ключевое слово Google: виртуальная файловая система. Кроме того, хорошо известная потребность в виртуальных файловых системах, по-видимому, указывает на то, что не виртуальные файловые системы могли бы использовать еще несколько методов полировки :(.
Кос
Однако это плохо для тех из нас, кто использует твердотельные накопители - мы не можем переместить редко загружаемый материал на жесткие диски, потому что все игровые данные находятся внутри большого файла. Скажи для WoW, я никогда не хожу в Запределье; Я бы просто переместил этот файл с SSD. Не так выполнимо, чтобы сказать ... CoD 4.
Мирча Chirea
6

Помимо очень хорошего ответа Адама, я также хотел бы указать на некоторые другие важные факторы:

  1. Чем меньше у вас файлов, тем проще развертывание приложения. Это особенно верно, если вы хотите развернуть свое приложение на мобильных платформах, таких как iOS, Android или Windows Phone. Даже если в случае Windows Phone у вас все равно может быть столько файлов, сколько вы хотите, поскольку XAP-файлы, используемые для развертывания, являются просто zip-архивом, это

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

Александр Галкин
источник
Я занимался разработкой для Android и BlackBerry и никогда не сталкивался с проблемой слишком большого количества маленьких файлов. Однако до сих пор я не знал о пользе больших файлов ...
АБР