在汇集方面,重新使用最近“回收”的对象比那些长时间无效的对象更好吗?

时间:2016-07-17 19:57:19

标签: optimization language-agnostic pool pooling object-pooling

考虑以下情况:

  1. 使用中等实例化和初始化权重的一千(1000)个对象创建对象池。
  2. 其中,在申请中使用了800分钟。
  3. 然后,不再使用200,因此它们被释放并返回池中。
  4. 不久之后,需要再使用300个,并且即将从泳池中取出......
  5. 忽略代码差异,并考虑系统的自动内存和处理器缓存以及其他“隐藏”或自动处理器/内存优化(例如branch-prediction);对于Pool的后端结构,获取最近使用的对象(即使用Stack)比获取最不活跃的对象更快(即使用{{1} })?

    换句话说,从池中获取200个“使用过的”+ 100个“新”(堆栈方法)对象会比获得200个“新”+ 100个“已用”(队列方法)对象更快吗?

    是的,我知道这可能是矫枉过正的优化......只要忍受我;我认为这是一个有趣的问题!而且我没有技术诀窍来将速度差异与代码(应该被忽视)与其他因素的差异区分开来。

0 个答案:

没有答案