我使用"Requests Buffer“类作为我的主Model类的@属性。buffer有一个延迟实例化,当buffer模型中没有要处理的项时,将其设置为nil。我想知道复杂buffer对象的分配和释放是否有一个合理的频率?在模型的所有生命周期中,将其分配在实例变量中何时才有意义?也许有人可以解释分配背后的机制,它是以CPU为代价的吗?请给我建议。每秒大约有5-10个分配/释放。
发布于 2013-09-02 11:15:08
你量过了吗?在您支持的功能最差的硬件上,是否存在用户明显的性能问题?您是否在低带宽/高延迟与高带宽/低延迟情况下对其进行了测试?
如果用户在使用最低功率和最高功率配置的带宽配置中没有明显的问题,那么进一步的追求只不过是一种非常有价值的教育练习。
如果存在问题,则无法知道性能瓶颈在哪里,直到您对其进行测量。不能优化你不知道的慢!
分配工具和CPU分析器工具都是量化性能的优秀工具。
合理大小的分配相对便宜,尽管它们确实需要跨线程执行一次(或几次)同步操作。新内存的消耗是昂贵的,但在具有大量分配/事务分配的工作集上波动通常是相当快的。在任何具有大量分配/取消分配流量的系统中,都会出现碎片,随着时间的推移,这将是代价高昂的。
发布于 2013-09-02 11:17:12
只需遵循以下规则:
只有这样才能看一看优化。
5-10每秒的分配/释放在正常情况下是不明显的,除非涉及一些复杂和缓慢的初始化或同步代码。
https://stackoverflow.com/questions/18565101
复制相似问题