¿Debo llamar al recolector de basura durante la pantalla de carga?


9

Entonces, leí un poco sobre la recolección de basura últimamente, por curiosidad, y hay algo que se repite con bastante frecuencia: la recolección de basura puede conducir a una desaceleración repentina del programa, dependiendo de la "profundidad" de la recolección.

Pero en los videojuegos, hay un momento en el que el usuario realmente no puede notar un pequeño retraso: la pantalla de carga. Entonces, pensé, podría ser útil proceder a la recolección completa de basura durante una fase de carga (a través de Collect ()), tener que esperar un segundo o dos más no debería afectar realmente al usuario.

Mi pregunta es, ¿es realmente útil o no hay ningún beneficio real para hacer esto?


Como parte del proceso de depuración de mi juego, le he dado al usuario una opción para llamar al recolector de basura en cualquier momento. Dependiendo de cómo va esto, también puede existir en la versión final del juego. Sugeriría llamarlo durante las pantallas de carga y, en general, en cualquier otro momento en que no interrumpa visualmente al usuario. Si su juego tiene una animación de muerte que pasa a la pantalla en negro, esta sería una oportunidad perfecta para llamar al recolector de basura también.
Krythic

Respuestas:


13

Sí, llámalo como lo último que haces al cargar.

Esto maximizará el tiempo entre el inicio del nivel y el primer retraso debido a un GC.

Sin embargo, también deberías intentar minimizar las asignaciones en general para no tener más retrasos durante un nivel.

Vea bajo rendimiento en 360 y WP7 y Twin Paths To Garbage Collector Nirvana


1
También es prácticamente la ÚNICA vez que debe llamarlo, especialmente en los marcos compactos (XBox, WinPhone).
Jonathan Dickinson

1
@ JonathanDickinson: Absolutamente. Solo debería llamarse donde el usuario esperaría una pausa (cargando típicamente, tal vez guardando también), y definitivamente no como parte de un evento de bucle / regular.
George Duckett
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.