El temporizador predeterminado de Windows funciona en pasos de 15.6 ms, así que “esperar solo 1 ms” se alarga en la práctica hasta el siguiente ciclo del temporizador, hasta 15.6 ms.
Por qué El límite de FPS y el envío de paquetes se implementan con Sleep (una espera breve) → Efecto El SO solo despierta al proceso en pasos de 15.6 ms → En pantalla El intervalo entre frames y el intervalo de envío de inputs se vuelven irregulares
Responsable principal Desarrollo de cliente (Equipo de desarrollo)
Tareas (Equipo de desarrollo)
Usar temporizadores de alta resolución, regular el ritmo con eventos o con V-Sync, sin depender de esperas.
Cifras de referencia
Con pasos de 15.6 ms no se puede clavar un intervalo de 16.7 ms, así que el intervalo entre frames oscila entre 15.6 ms y 31.2 ms.
En el gráfico
Siempre alto · Distribución del intervalo entre frames
Dónde mirar
Distribución de MsBetweenPresents (intervalo entre frames) de PresentMon y el apartado “Platform Timer Resolution” del informe de powercfg /energy (procesos que cambiaron la resolución del temporizador)
Se confirma si
Los intervalos entre frames se concentran en múltiplos de 15.6 ms, como 15.6 ms y 31.2 ms, y el juego no pide una resolución de temporizador mayor
Se descarta si
Si los intervalos se reparten de forma uniforme, es poco probable que sea el temporizador. Más probable: “Procesos en segundo plano que ocupan la CPU” o la carga del frame
Se verifica con
En el entorno del jugador
Para saber más
En versiones antiguas de Windows, si un programa cambiaba el temporizador a 1 ms, el cambio se aplicaba a todos los programas. De ahí venía la idea de que “con el navegador abierto el juego va más fluido”. Desde Windows 10, versión 2004, solo se aplica al programa que lo pide, y Windows 11 puede ignorar la solicitud de ventanas minimizadas o totalmente tapadas que no emiten sonido.
Fuentes
_WDF_TIMER_CONFIG (wdftimer.h)Microsoft La precisión de un temporizador normal es el intervalo del tick del reloj del sistema, 15.6 ms por defecto; la de un temporizador de alta resolución, 1 ms
timeBeginPeriod function (timeapi.h)Microsoft Antes de Windows 10, versión 2004, era un ajuste global; después solo se aplica al proceso que lo pide, y Windows 11 no garantiza la alta resolución a los procesos de ventanas tapadas o minimizadas
Results for the Idle Energy Efficiency AssessmentMicrosoft Resolución predeterminada del temporizador del sistema: 15.6 ms; el apartado “Platform Timer Resolution” del informe de energía muestra qué procesos cambiaron la resolución del temporizador