nr@atomic.Princeton.EDU (Norman Ramsey) (03/28/91)
I have a program that is generating pickles that are too large. I can
imagine two strategies for making them smaller:
a) increasing sharing
b) where sharing is unimportant, using WriteBytesProc and ReadBytesProc
As an example of the first stragety, since TEXTs are supposed to be
immutable, I would like to store a single REF for both s and t
whenever
TYPECODE(s)=TYPECODE(TEXT) AND TYPECODE(s)=TYPECODE(TEXT) AND Text.Equal(s,t)
I suspect that this change would realize a substantial savings in my
particular pickles, but I can't think of any way of using ConvertProcs
to implement this strategy using the current Pkl interface. By the
time I know I have a TEXT, it's too late to change it. Trying to find
all the TEXT-containing REF types might be very painful.
I might apply the second strategy to the type REF CHAR, resulting in a
savings of four bytes per value pickled.
Question 1: are there any general techniques that can be used to
increase sharing, so that distinct references that point
to isomorphic structures are merged into a single reference?
Question 2: how can I dissect a pickle to determine which types are
responsible for the most space usage? Are there any tools?
--
Norman Ramsey
nr@princeton.edu