Мне интересно, какие издержки при использовании 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
его можно было собрать, чтобы освободить память.
Каковы издержки для этого сценария?Есть альтернативы?