Fwd: [erlang-questions] Re: data sharing is outside the semantics of Erlang, but it sure is useful

Witold Baryluk <>
Thu Sep 17 04:46:09 CEST 2009


Dnia 2009-09-15, wto o godzinie 22:38 +0200, Tony Rogvall pisze:
> > Here is nice term encoder/decoder (below) that will solve the size  
> > problem.
> > The algorithm is not efficient (in Erlang) but if/when implemented  
> > in C it could be used as a bif.
> > Still it will produce decent results on (all) shared data.
> >
> >

Wow, really nice work. Quickly and simple.

te module is really interesting. but still needs some optimazations in
encode function like finding variables which are used only once and
merging / propagating them into original structure.

te:encode([ala,ewa,ala,ewa,{ala,bzium,"xasdddd","asdddd"},{foo,bar}])
is
{ala,ewa,97,115,100,[],
     [5|6],
     [5|7],
     [5|8],
     [5|9],
     [4|10],
     [3|11],
     120,
     [13|12],
     bzium,
     {1,15,14,12},
     bar,foo,
     {18,17},
     [19|6],
     [16|20],
     [2|21],
     [1|22],
     [2|23],
     [1|24],
     25}

it should be something more like:
{ala,ewa,{l,"asdddd"},[],
     120,
     [5|3],
     bzium.
     {1,6,7,3},
     {l,{bar,foo}},
     [2,1,2,1,8,9]}


where {l, X} means literal value of X.


or maybe even:
{ala,ewa,{l,"asdddd"},[],
     120,
     [2,1,2,1,{1,{l,bzium},[5|3],3},{l,{foo,bar}}]}

or even

{ala,ewa,{l,"asdddd"},[],
  [2,1,2,1,{1,{l,bzium},[{l,120}|3],3},{l,{foo,bar}}]}


depending what is "smaller"

I think that "optimization" of the output of the encode/1 function
can be done as separate pass after encode/1.


-- 
Witold Baryluk
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: To jest cz??? wiadomo?ci podpisana cyfrowo
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20090917/fb180476/attachment.bin>


More information about the erlang-questions mailing list