He estado desbloqueando la velocidad de fotogramas en MonoGame a través de:
this.graphics.SynchronizeWithVerticalRetrace = false;
base.IsFixedTimeStep = false;
Y usándolo como base de cuán eficiente estoy actualizando y dibujando en el juego.
Con una resolución de 240 x 160 sin dibujar ni actualizar nada excepto un contador de cuadros, obtengo un valor de FPS de 9,000 a 11,000 FPS.
Si agrego todo mi código nuevamente, se reduce a aproximadamente 1,100 FPS.
¿Es esta una buena indicación de que mi código está ralentizando significativamente la GPU (10x), y debería preocuparme? El juego se ejecutará a 60 FPS, así que todavía estoy bastante lejos de eso, pero ¿en qué punto de la velocidad de fotogramas desbloqueada debería preocuparme?
GPU: AMD FirePro W5000 (FireGL V)
monogame
frame-rate
prueba
fuente
fuente
Respuestas:
Solo crudamente.
Primero, FPS no es una medida lineal . La diferencia entre 11k FPS y 9k es extremadamente pequeña (0.0000201 segundos por cuadro). Pero la diferencia entre 60 y 2060 FPS (un delta de 2k FPS, lo mismo que existe entre 11k y 9k) es 0.0161 segundos ... mucho más grande. Por lo tanto, puede ser peligroso como una métrica de rendimiento simplemente porque grandes diferencias pueden o no ser tan malas.
En cambio, usar el tiempo por cuadro es un poco más fácil de razonar, pero aun así sigue siendo una visión muy amplia de la situación. Simplemente te dice cuántos segundos toma un fotograma del juego. No le dice por qué , a menos que observe un gran aumento en el tiempo de fotogramas inmediatamente después de agregar o habilitar una función en particular.
Puede ser un barómetro básico para decidir que es hora de hacer un perfil más profundo. Es particularmente malo usar FPS para determinar si está vinculado a la CPU o GPU; La creación de perfiles de GPU no es tan fácil como medir el tiempo en la CPU (que es donde probablemente esté su código de sincronización y cálculo de FPS).
En cuanto a cuándo debería preocuparte ... bueno, dijiste que el juego apuntaba a 60 FPS. Si comienza a sumergirse cerca o debajo de eso, entonces probablemente deba comenzar a pensar más cuidadosamente sobre sus problemas de rendimiento. Hasta entonces, me concentraría en hacer que todo funcione y luego me preocuparía por hacerlo rápido .
fuente
¡No veo por qué no pudiste usarlo! Tenga en cuenta que es posible que tenga que codificar de manera diferente para tener en cuenta las diferencias entre el paso de tiempo fijo / variable, por lo que si planea arreglarlo cuando lo lance, tendrá que hacer ajustes. Ver este artículo: http://rbwhitaker.wikidot.com/time-steps
Podría ser la CPU también. Recomiendo ejecutar periódicamente el generador de perfiles incorporado de Visual Studio (o cada vez que vea una gran caída de la velocidad de fotogramas) para encontrar puntos calientes en su código.
Eso obviamente depende del hardware al que se dirige. Tendrá que probar su código con las máquinas con los requisitos mínimos más bajos que está dispuesto a admitir. Si funciona al menos 60 allí, entonces no estaría demasiado preocupado.
fuente