Dois-je appeler le garbage collector pendant l'écran de chargement?

9

Donc, j'ai lu un peu sur Garbage Collection récemment, par curiosité, et il y a quelque chose qui se répète assez souvent: la collecte des ordures peut entraîner un ralentissement soudain du programme, en fonction de la "profondeur" de la collecte.

Mais dans les jeux vidéo, il y a un moment où l'utilisateur ne peut pas vraiment remarquer un petit décalage: l'écran de chargement. Donc, je pensais, il pourrait être utile de procéder à une collecte complète des déchets pendant une phase de chargement (via Collect ()), le fait d'attendre une seconde ou deux de plus ne devrait pas vraiment avoir d'impact sur l'utilisateur.

Ma question est la suivante: est-ce vraiment utile ou n'y a-t-il aucun avantage réel à le faire?

Jupotter
la source
Dans le cadre du processus de débogage de mon jeu, j'ai fourni à l'utilisateur une option pour appeler le garbage collector à tout moment. Selon la façon dont cela se passe, il peut également exister dans la version finale du jeu. Je suggère de l'appeler pendant le chargement des écrans et généralement à tout autre moment où cela n'interrompra pas visuellement l'utilisateur. Si votre jeu a une animation de mort qui passe à l'écran noir, ce serait aussi l'occasion idéale d'appeler le garbage collector.
Krythic

Réponses:

13

Oui, appelez-le comme la dernière chose que vous faites lors du chargement.

Cela maximisera le temps entre le début du niveau et le premier décalage dû à un GC.

Vous devriez également essayer de minimiser les allocations en général, de sorte que vous n'ayez plus de retards pendant un niveau.

Voir les mauvaises performances sur 360 et WP7 et Twin Paths To Garbage Collector Nirvana

George Duckett
la source
1
C'est aussi à peu près la SEULE fois que vous devez l'appeler - en particulier sur les cadres compacts (XBox, WinPhone).
Jonathan Dickinson
1
@JonathanDickinson: Absolument. Il ne devrait être appelé que là où l'utilisateur s'attendrait à une pause (chargement en général, peut-être aussi enregistrement), et certainement pas dans le cadre d'un événement boucle / régulier.
George Duckett