[DGD]Resources used by sparse arrays
Par Winzell
zell at skotos.net
Sat Dec 16 00:17:17 CET 2000
> > My questions to the more knowledgeable types are these: first, is more
> > memory going to be used by that array with 38 empty elements and seven
> > strings in it, or by an array of seven integers plus an array of seven
> > strings? Second, would the situation change if the arrays were smaller
> > (say, 5 out of 22 elements filled, or two five-element arrays) or more
> > densely packed (say, 15 out of those 45 elements filled)?
>
> The 45 element array with 7 strings will take more memory than the
> pair of 7 element arrays.
Correct me if I'm wrong -- I skipped a night's sleep -- but I think this
is how the memory consumption plays out...
Given M non-nil elements in an array and a maxmium element index of N;
if we consider each LPC 'value' to be size 1, then by the simple, one-
array method the memory consumption excepting the actual data would be,
A = 1 + N (one array value, N array element values)
and for method two, with an array of indices,
B = 2 + 2*M (two array values, each with M element values)
and so equilibrium is reached at
A == B <->
1 + N == 2(1 + M) <->
N = 2M - 1
It is clear that in the case of N=47 and M=7, Erwin is correct and the
simple solution is the less efficient one. It is equally clear that as
N and M grow large, A/B -> 0.5N/M, and so the more complex solution is
more efficient whenever more than half the elements are nil.
;)
Zell
List config page: http://list.imaginary.com/mailman/listinfo/dgd
More information about the DGD
mailing list