
Vladimir Prus <ghost <at> cs.msu.su> writes:
On Friday 24 June 2005 12:27, Joaquín Mª López Muñoz wrote:
[...]
The hardest part is checking for equality. My proposal is to follow a hash-based approach, which is effective both in terms of complexity and space (one word per tracked object.), and does not impose any special requirement on the serialized objects (for instance, an approach based on operator== would require that objects be equalitycomparable).
.....
What do you think?
This suggestion is very interesting! But I wonder, how you can detect for sure that objects are the same using a hash. Two different object can hash to the same value? Maybe, operator== is still needed?
Admittedly, hash-based checking is not 100% safe, but I don't think resorting to operator== is doable because: * A serializable type need not be equality comparable. * Even if the type is equality comparable, you'd have to store a copy of the object first time you see it in order to check it later against later occurrences. This further imposes assignability on the type, and the overhead of copying and storing a whole object can be prohibitive. Joaquín M López Muñoz Telefónica, Investigación y Desarrollo