En un dispositivo con sistema operativo para iPhone, ¿cuántos NSTimers ejecutados simultáneamente serían demasiados? Tengo un montón de rutinas llamadas por un solo temporizador que dispara 25 veces por segundo, y las cosas son bastante agitadas, lentas y pesadas. Estoy pensando en agregar uno o más NSTimers adicionales para distribuir la carga de trabajo un poco, pero estoy preocupado acerca de cuántos estaría bien usar. Esto puede depender en cierta medida de la velocidad de disparo de cada temporizador individual que conozco, así que supongamos una velocidad de disparo de 20 ~ 30 veces por segundo. Entonces, ¿cuántos NSTimers son demasiados?¿Cuántas NSTimers son demasiadas?
Respuesta
Internamente, NSTimers
están implementados en un solo temporizador de hardware. El sistema operativo mantiene una lista central de temporizadores para todas las aplicaciones en ejecución y simplemente programa un solo temporizador de hardware para el evento más cercano.
Agregar temporizadores no cambia el comportamiento de su aplicación. Dicho esto, de la misma manera que agregar subprocesos a una aplicación de proceso esencialmente única facilita la administración del tiempo de ejecución, agregar temporizadores puede ayudarlo a dividir su problema.
Dado el tiempo que citas, supongo que este temporizador es la sincronización frameupdate para un juego o algo similar. Sugeriría un par de cosas:
Dividir el código de dibujo actual en una secuencia separada y ejecutar el (mismo) código del temporizador en ese. Esto debería darte más control.
Perfile su código para ver cuánto procesamiento se realiza en cada una de esas ranuras de 1/25s; puede ser (y probablemente lo sea) que simplemente necesite optimizar su código.
1 en su caja. Agregar un temporizador adicional no hace que su aplicación se ejecute más rápido.
Tienes que hacer que tu código sea más eficiente o disparar el temporizador con menos frecuencia.
No sé sobre la sobrecarga de un temporizador, pero podría ser considerable con un índice de fuego tan alto. Los temporizadores no están hechos para esto, sugiero un hilo como alternativa.
Parece que el número de temporizadores no es un problema. La sobrecarga de NSTimers es básicamente intrascendente en comparación con la carga que estás haciendo en tu "montón de rutinas". No te preocupes por eso por ahora. Use tantos temporizadores como necesite. Después de eso, abre tiburones/instrumentos y mira en qué métodos pasas más tiempo.
- 1. ¿Cuántas capas son demasiadas?
- 2. ¿Cuántas PHP incluye son demasiadas?
- 3. mysql: ¿cuántas columnas son demasiadas?
- 4. MySQL: ¿Cuántas consultas por página son demasiadas?
- 5. ¿Cuántas clases son demasiadas? Rails STI
- 6. ¿Cuántas filas de MySQL son demasiadas?
- 7. ¿Cuántas líneas de código PHP son demasiadas para un archivo?
- 8. ¿Cuántas tablas son "demasiadas" en un único SQL SELECT?
- 9. ¿Cuántas son demasiadas incluidas en <HEAD>?
- 10. ¿Cuántas manijas de Windows en uso son "demasiadas"?
- 11. ¿Cuántas columnas hay demasiadas columnas?
- 12. ¿Cuántas teclas hay demasiadas en memcached?
- 13. Inyección de constructor: ¿Cuántas dependencias hay demasiadas?
- 14. ¿Cuántas ViewStubs son demasiadas para un único archivo XML de diseño?
- 15. ¿Cuántas columnas son demasiadas para una tabla de SQL Server 2005?
- 16. ¿Cuántas filas de datos hay demasiadas filas de datos?
- 17. ¿Cuántas particiones de tabla hay demasiadas en Postgres?
- 18. iphone - NSTimers en el fondo
- 19. Cuántas combinaciones son factibles en la práctica
- 20. ¿Cuántas palabras clave son ideales para la etiqueta META keywords?
- 21. Demasiadas actividades en Android?
- 22. ¿Cuándo tienes demasiadas mesas?
- 23. Sequel seleccionando demasiadas columnas
- 24. MySQLNonTransientConnectionException: Demasiadas conexiones
- 25. mysql ¿demasiadas columnas?
- 26. ¿Hay demasiadas tablas?
- 27. LaTeX dividiendo demasiadas palabras
- 28. ¿Cuántas actividades debo usar?
- 29. Error de MySQL "Demasiadas conexiones"
- 30. JSF preRenderView llamado demasiadas veces