在iPhone OS设备中,同时运行NSTimers的人数是多少?我有一堆被一个定时器每秒发射25次的例程调用,事情非常波动,缓慢和沉重。我正在考虑添加一个或多个额外的NSTimers来分配工作量,但我担心有多少人可以使用。这可能有点取决于我意识到的每个计时器的发射速率,所以假设每秒发射速率为20〜30次。那么,有多少NSTimers太多了?有多少NSTimers太多?
5
A
回答
5
在内部,NSTimers
都在单个硬件计时器上实现。操作系统为所有正在运行的应用程序保留一个定时器的中央列表,并为最快的事件安排一个硬件定时器。
添加计时器不会改变您的应用程序的行为。也就是说,以同样的方式将线程添加到基本上单一的进程应用程序中,可以使运行时管理变得更加简单,添加计时器可以帮助您划分问题。
鉴于你引用的时间,我猜这个计时器是一个游戏或类似的frameupdate同步。我会建议几件事情:
将您当前的绘图代码拆分为一个单独的线程并运行您的(相同的)定时器代码。这应该给你更多的控制。
对您的代码进行剖析,以查看在每个1/25s插槽中执行了多少处理 - 它可能(也可能是)您只需优化代码。
1
1在你的情况。添加额外的计时器不会让您的应用程序运行得更快。
你必须提高你的代码效率或减少定时器的启动次数。
我不知道一个定时器的开销,但它可能是相当高的火灾率。定时器不是为此制作的,我建议一个线程作为替代。
2
听起来像定时器的数量不是问题。与你在“一堆例程”中进行的加载相比,NSTimers的开销基本上是无关紧要的。现在不要担心。根据需要使用尽可能多的计时器。之后,打开鲨鱼/乐器,看看你最花时间在哪些方法上。
相关问题
- 1. 有多少层太多?
- 2. 有多少个EJB太多?
- 3. 有多少查询太多?
- 4. STL有多少太多?
- 5. 有多少任务太多?
- 6. JSON有多少JSON太多?
- 7. 多少javascript太多
- 8. 多少是太多?
- 9. JVM中有多少个对象太多?
- 10. WCF-有多少种方法太多?
- 11. SQL SSIS有多少步骤太多
- 12. 有多少NGinx重定向太多?
- 13. memcached中有多少个键太多?
- 14. 有多少记录/对象太多?
- 15. ReactJS中有多少组件太多?
- 16. MVC中有多少GUI逻辑太多?
- 17. 有多少顶点缓冲区太多?
- 18. 有多少PHP包含太多?
- 19. 有多少Ruby线程太多?
- 20. SQL Server 2005表有多少列太多?
- 21. mysql-query中有多少where-clause太多?
- 22. 有多少班级太多? Rails STI
- 23. 有多少构造函数太多?
- 24. 表中有多少个“太多”字段?
- 25. 有多少列是太多列?
- 26. 有多少个nginx缓冲区太多?
- 27. 有多少sql查询太多?
- 28. 多少Javascript太多了?
- 29. (Java)重载:多少太多?
- 30. 多少CSS太多CSS?