Чи потрібно зателефонувати до сміттєзбірника під час завантаження екрана?


9

Так, останнім часом я читаю трохи про «Збір сміття» з цікавості, і є щось, що повторюється досить часто: збирання сміття може призвести до раптового уповільнення програми, залежно від «глибини» колекції.

Але у відеоіграх є момент, коли користувач не може помітити невеликий відставання: завантажувальний екран. Отже, я подумав, може бути корисним перейти до повного вивезення сміття під час фази завантаження (через Collect ()), тому що потрібно почекати секунду чи дві більше, це не повинно реально вплинути на користувача.

Моє запитання: чи це дійсно корисно, чи немає реальної користі від цього?


У рамках процесу налагодження моєї гри я надав користувачеві можливість в будь-який час викликати колектор сміття. Залежно від того, як це відбувається, воно може існувати і в кінцевій збірці гри. Я б запропонував викликати його під час завантаження екранів і, як правило, у будь-який інший час, коли він не візуально перебиває користувача. Якщо у вашій грі є анімація смерті, яка переходить на чорний екран, це також буде прекрасною можливістю зателефонувати до сміттєзбірника.
Критичний

Відповіді:


13

Так, називайте це останнім, що ви робите під час завантаження.

Це дозволить максимально збільшити час між початковим рівнем та першим відставанням завдяки ГК.

Ви також повинні намагатися мінімізувати виділення в цілому, хоча ви не отримаєте більше затримок під час рівня.

Дивіться погану ефективність на 360 та WP7 та Twin Paths to Garbage Collector Nirvana


1
Крім того, це майже ВСЕ ТІЛЬКИ час, коли Ви повинні його назвати - особливо на компактних рамах (XBox, WinPhone).
Джонатан Дікінсон

1
@JonathanDickinson: Абсолютно. Його слід називати лише там, де користувач очікував би паузу (завантаження зазвичай, можливо, і заощадження), і точно не є частиною циклу / регулярної події.
Джордж Дакетт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.