5

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

4

3 回答 3

5

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

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

鉴于您引用的时间,我猜这个计时器是游戏或类似东西的帧更新同步。我会建议几件事:

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

  2. 分析您的代码以查看在每个 1/25s 插槽中执行了多少处理 - 您可能(并且可能是)只需要优化您的代码。

于 2009-05-21T07:16:24.597 回答
2

听起来计时器的数量不是问题。与您在“一堆例程”中执行的加载相比,NSTimers 的开销基本上是微不足道的。暂时不用担心。根据需要使用尽可能多的计时器。之后打开鲨鱼/仪器,看看你在哪些方法上花费的时间最多。

于 2009-05-21T06:30:05.973 回答
1

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

您必须使您的代码更高效或更少地触发计时器。

我不知道计时器的开销,但它可能是相当高的射速。计时器不是为此而设计的,我建议使用线程作为替代方案。

于 2009-05-21T06:02:33.967 回答