Чому великі файли краще, ніж маленькі файли для консолей?


18

Чому розробники консольних ігор використовують великі файли для зберігання ігрових даних замість невеликих файлів, як на ПК? Менше потоків у пам'яті? Потрібно звертатися до файлового дерева багато разів? Інша причина?


Можливо, аналог у веб-світі: CSS Sprites
Nick T

CSS спрайт - це поганий мінус використання старого іржавого HTTP 1.1, який, очевидно, робить сервери не в змозі надсилати багато ресурсів за допомогою одного з'єднання. Бажаю нового стандарту.
Кос

1
@Kos Ваше бажання було задоволено , хоча, на жаль, ще не здійснено.
Фігаг

Дякую за це! Я хочу спекти їм торт, щоб вони швидше працювали.
Кос

Відповіді:


37

Наявність одного великого файлу має кілька переваг для продуктивності, незалежно від платформи. У багатьох іграх на ПК також використовуються великі файли.

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

  • Ви отримуєте повний контроль над порядком даних у файлі, так що ви можете їх упорядкувати, щоб мінімізувати потребу в повільних пошуках.

  • Стиснення даних, як правило, ефективніше для одного великого файлу, ніж для окремих файлів.

Зауважте, що уникнення домагань дуже ефективно прискорює час завантаження. Типовий жорсткий диск може мати час пошуку 10мс і швидкість передачі 100МБ / с. Скажімо, вам потрібно завантажити 100 файлів шейдерів загальним розміром 1 Мб. Якщо вам доводиться шукати кожного, знадобиться одна секунда, щоб завантажити їх усі. Одноразовим пошуком ви дивитесь на 20 мс, щоб завантажити їх усі.

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


9
Дуже приємна відповідь. До речі, із прикладами пошуку одного файлу проти кількох файлів.
Вільям Маріагер

1
Крім того, для конкурентних онлайн-ігор набагато, набагато швидше (і використовується набагато менше місця на диску), щоб переконатися, що гравець не підробляв жоден величезний файл, ніж індивідуально перевіряти тисячі маленьких файлів.
Тревор Пауелл

Ключове слово Google: віртуальна файлова система. Також добре заявлена ​​потреба у вірусних файлових системах вказує на те, що невіртуальні файлові системи можуть використовувати ще кілька полірування :(.
Кос

Однак це погано для тих, хто використовує SSD - ми не можемо переміщувати рідко завантажені речі на жорсткі диски, тому що всі дані гри знаходяться у великому файлі. Скажіть для WoW, що я ніколи не їду в Західний край; Я просто переміщу цей файл з SSD. Не так можна сказати ... CoD 4.
Mircea Chirea

6

Крім дуже хорошої відповіді, яку дав Адам, я також хотів би зазначити деякі інші важливі фактори:

  1. Чим менше файлів, тим легше - це розгортання вашої програми. Це особливо актуально, якщо ви хочете розгорнути додаток на мобільних платформах, таких як iOS, Android або Windows Phone. Навіть якщо у випадку з Windows Phone у вас все одно може бути стільки файлів, скільки ви хочете, оскільки XAP-файли, які використовуються для розгортання, є лише поштовим архівом, це

  2. Маючи всі свої активи в одному файлі, ви гарантуєте, що всі вони завантажуються / читаються "по шматочках" . Багато гравців вибачать у вас помітну затримку завантаження активів або розпакування їх до початку гри, але вони будуть не поблажливими, доки вони зіткнуться з навіть тонкими паузами під час гри. Звичайно, ви можете попередньо кешувати свої ресурси в оперативній пам’яті, але завантажувати їх «на шматок» для цієї мети все ж простіше, ніж завантажувати їх на основі файлів.


Я займався розробкою Android та BlackBerry і ніколи не стикався з проблемою із надто великою кількістю невеликих файлів. Я досі не знав про користь більших файлів, однак ...
ADB
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.