Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[imp-dev] A note on the different implementations of IValueFactory in pdb.values

Dear imps,

I've merged the contributions of Arnold Lankamp (CQ 3288) to
org.eclipse.imp.pdb.values. This includes the
binary streamable (de)serialization format for values and two
implementations of IValueFactory
and respective implementations of IValue and friends.

Note that values constructed from/by different IValueFactories are not
to be mixed. We currently
do not cater for this in any of the implementations. It wasn't one of
our design decisions either to
have such a feature (point to ponder).

Caution advised! Mixing values from different factories is quite an
easy pit to fall into.
Common symptoms {sh,c,w}ould be:
  - ClassCastExceptions
  - surprising inequalities between values (also with the isEqual() method)
  - surprising double occurring elements in sets or tuples in
relations or keys in maps (caused by previous point)

Nevertheless, the two new factories improve performance dramatically
as compared to the reference implementation
of IValueFactory. Pdb.fast is the current high speed champion in most
of the tested analyses that deal with relations
and pdb.shared wins for analyses that deal with trees a lot.

Cheers,

Jurgen

P.S. Thanks Arnold for your contributions!


Back to the top