1

我正在使用“请求缓冲区”类作为我的主模型类的 @property。缓冲区有一个惰性实例化,当缓冲区模型中没有要处理的项目时,将其设置为 nil。我想知道复杂缓冲区对象的分配和释放是否有合理的频率?在模型的所有生命周期中将其分配在实例变量中什么时候才有意义?可能有人可以解释分配背后的机制,它是以 CPU 为代价完成的吗?请指教。每秒大约有 5-10 次分配/解除分配。

4

2 回答 2

2

你量过吗?在您支持的功能最差的硬件上是否存在用户明显的性能问题?您是否在低带宽/高延迟和高带宽/低延迟情况下测试过它?

如果在具有最低功率和最高功率配置的带宽配置中对用户没有明显的问题,那么进一步的追求无非是[非常有价值的]教育练习。

如果出现问题,在您测量之前无法知道性能瓶颈在哪里。不能优化你不知道慢的!

Allocations Instrument 和 CPU profiler Instrument 都是用于量化性能的出色工具。


合理大小的分配相对便宜,尽管它们确实需要跨线程的同步操作(或几个)。内存的消耗是昂贵的,但是在一个有很多 allocs/deallocs 的工作集上颤动通常非常快。在任何具有大量 alloc/dealloc 流量的系统中,都会出现碎片,并且随着时间的推移,这将是代价高昂的。

于 2013-09-02T03:15:07.570 回答
1

只需遵循以下规则:

  • 编写干净且结构良好的代码
  • 让它工作
  • 如果表现不佳,请对其进行分析并确定瓶颈

然后才看优化。

每秒 5-10 次分配/解除分配在正常情况下不会引起注意,除非涉及一些复杂且缓慢的初始化或同步代码。

于 2013-09-02T03:17:12.080 回答