我想知道使用WeakRef处理大型数据集的开销是多少?Ruby中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
之后,它可以被垃圾回收以释放一些内存。
这种情况的开销是多少?任何替代品?
只要使用'huge'变量,将数据加载到块中仍将保留所有对象。 – 2010-11-10 07:30:34
但是你的过程是迭代的,所以你不需要在存储器中存储整个'巨大',对吧? – glebm 2010-11-10 22:29:54
对于这种情况是正确的。 – 2010-11-13 03:52:28