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


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.