有多少NSTimers太多了?

时间:2009-05-21 05:57:05

标签: iphone nstimer

在iPhone OS设备中,有多少同时运行的NSTimers会太多?我有一堆例程被一个计时器调用,每秒发射25次,而且事情非常不稳定,缓慢而且很重。我正在考虑添加一个或多个额外的NSTimers来分配工作量,但我担心有多少可以使用。这可能在一定程度上取决于我实现的每个单独计时器的点火率,因此我们假设点火率为每秒20~30次。那么,有多少NSTimers太多了?

3 个答案:

答案 0 :(得分:5)

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

添加计时器不会改变您应用的行为。也就是说,就像将线程添加到基本上单个流程应用程序使运行时管理更容易一样,添加计时器可以帮助您对问题进行分区。

考虑到你引用的次数,我猜这个计时器是游戏的帧更新同步或类似的东西。我会建议一些事情:

  1. 将当前的绘图代码拆分为一个单独的线程,然后在其中运行(相同的)计时器代码。这应该给你更多的控制权。

  2. 对您的代码进行分析,以了解每个1/25插槽中执行的处理量 - 可能(可能是)您只需要优化代码。

答案 1 :(得分:2)

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

答案 2 :(得分:1)

在你的情况下

1。添加额外的计时器不会使您的应用程序运行得更快。

您必须提高代码效率或减少定时器的使用频率。

我不知道计时器的开销,但是如果火速很高,它可能会相当大。定时器不是为此而做的,我建议使用一个线程作为替代方案。