我想知道使用WeakRef处理大数据集的开销是多少?
我要执行的任务如下:
huge = get_array_of_weak_refs # 100000000 entries or more :)
result = huge.length * huge.inject(0) { |accum, it| accum += it.total } # much more complicated, just a sample
假设
get_array_of_weak_refs
不费时且具有O(1)
复杂性。因此,唯一需要考虑的是huge
数组的内存大小。我现在也不关心计算
result
所需的时间。如果
huge
是一个普通数组,那么它当然可能不适合内存。但如果weakref被用作这个数组的元素会有帮助吗?因此,在我们遍历元素
x
之后,可以对其进行垃圾收集以释放一些内存。这个场景的开销是多少?有其他选择吗?
最佳答案
你为什么在这里使用弱引用?它们不会有帮助,也不是为这种情况而设计的。
相反,设置一个迭代器(一个响应each
的对象),它以块的形式加载数据。