2009-05-21 122 views
5

在iPhone OS设备中,同时运行NSTimers的人数是多少?我有一堆被一个定时器每秒发射25次的例程调用,事情非常波动,缓慢和沉重。我正在考虑添加一个或多个额外的NSTimers来分配工作量,但我担心有多少人可以使用。这可能有点取决于我意识到的每个计时器的发射速率,所以假设每秒发射速率为20〜30次。那么,有多少NSTimers太多了?有多少NSTimers太多?

回答

5

在内部,NSTimers都在单个硬件计时器上实现。操作系统为所有正在运行的应用程序保留一个定时器的中央列表,并为最快的事件安排一个硬件定时器。

添加计时器不会改变您的应用程序的行为。也就是说,以同样的方式将线程添加到基本上单一的进程应用程序中,可以使运行时管理变得更加简单,添加计时器可以帮助您划分问题。

鉴于你引用的时间,我猜这个计时器是一个游戏或类似的frameupdate同步。我会建议几件事情:

  1. 将您当前的绘图代码拆分为一个单独的线程并运行您的(相同的)定时器代码。这应该给你更多的控制。

  2. 对您的代码进行剖析,以查看在每个1/25s插槽中执行了多少处理 - 它可能(也可能是)您只需优化代码。

1

1在你的情况。添加额外的计时器不会让您的应用程序运行得更快。

你必须提高你的代码效率或减少定时器的启动次数。

我不知道一个定时器的开销,但它可能是相当高的火灾率。定时器不是为此制作的,我建议一个线程作为替代。

2

听起来像定时器的数量不是问题。与你在“一堆例程”中进行的加载相比,NSTimers的开销基本上是无关紧要的。现在不要担心。根据需要使用尽可能多的计时器。之后,打开鲨鱼/乐器,看看你最花时间在哪些方法上。