Diccionario de cola de grupo de objetos
1. Pérdida de memoria
Se utilizaron punteros inteligentes C11 en un proyecto reciente. Después de un año de uso, ha demostrado ser una elección acertada. Si bien no existe ansiedad por el autocontrol, aumenta la posibilidad de sufrir pérdidas de memoria. Después de todo, no todo el mundo puede comprender y dominar completamente el uso deshared_ptr. Se recomienda utilizar el puntero inteligente liviano que viene con cocos2dx, que utiliza el conteo de referencias. No hay ningún problema, como la referencia circular del puntero inteligente de C11, que puede provocar fácilmente excepciones en el conteo de referencias.
2. Gestión de la caché (caché de materiales, caché de marcos del asistente)
Es necesario introducir una escena de transición para eliminar la caché no utilizada y luego precargar los recursos necesarios para la siguiente escena. Cocos2dx proporciona una API para ver todos los cachés en la memoria. Como desarrolladores, debemos estar completamente familiarizados con estos cachés en la memoria y poder juzgar de manera oportuna qué materiales son redundantes.
Una cosa a mencionar aquí es que es muy necesario usar pkm para Android y pvr para ios en lugar de jpg. Especialmente el mapa súper grande de 8000*8000.
3. Grupo de objetos de alto rendimiento
El grupo de objetos tradicional tiene solo una lista para guardar todos los objetos y utiliza un recorrido de bucle para encontrar objetos no utilizados cada vez.
La optimización aquí es agregar una cola para almacenar todos los objetos disponibles. Push_front se ejecuta cada vez que se usa el objeto y cada uso se obtiene a través de pop_front.
2. Optimización de CPU
1. Funciones matemáticas aproximadas
Raíz cuadrada, algoritmo de reemplazo aproximado de funciones trigonométricas, cálculo de la distancia entre dos puntos (distancia de Manhattan, Newton Iteración o comparación con valores cuadrados), operaciones de desplazamiento (para operaciones frecuentes de multiplicación y división de 2 a la enésima potencia), etc.
2. Algoritmo
De hecho, la elección del algoritmo impregna cada módulo funcional, incluso si es pequeño. Para aquellos de nosotros que no nos especializamos en algoritmos, los algoritmos son más una conciencia. Rechace todas las operaciones con una complejidad temporal de O (n * n), nunca sobreestime el rendimiento informático de la CPU y esfuércese por realizar cálculos más bajos en las operaciones existentes. Luego elija el algoritmo que se adapte a su proyecto.
Marcos
Los marcos son una mala situación porque la optimización puede estar al final. De hecho, hay algunos cálculos que requieren un uso intensivo de la CPU y que deben enmarcarse o incluso enhebrarse.
PD: Se cambia espacio por tiempo. De hecho, los tres artículos anteriores, incluido mi algoritmo de desenfoque gaussiano de alto rendimiento, están básicamente optimizados para la CPU, intercambiando espacio por tiempo.
3.Optimización de GPU (optimización de llamadas de sorteo)
1. División de gráficos muy grandes
La división demasiado pequeña tiene un gran impacto en la llamada de sorteo. Actualmente se utiliza el corte de maximización 2048*2048 y la imagen se almacena en la memoria caché en un formato comprimido.
2. Combinación (escena multicámara)
Para escenas con muchas cámaras, debido a que la capa inferior es una cámara transversal, cada cámara realiza todo el dibujo de la escena una vez.
Por lo tanto, al combinar imágenes, debe combinarlas en capas según la cámara y no combinar imágenes de diferentes cámaras.
Como desarrollo, deberíamos poder estimar el número de retiros en función de los escenarios que vemos y optimizar gradualmente el número de retiros en diferentes niveles al juzgar anomalías.