[Python-Dev] sizeof(long) != sizeof(void*)
Samuele Pedroni
pedronis at bluewin.ch
Thu Aug 7 04:50:07 EDT 2003
At 21:23 06.08.2003 -0400, Tim Peters wrote:
>[Samuele Pedroni]
> > care to suggest a cheap way to get such a unique integer that's
> > not the address.
>
>I'd love to, but don't know enough about Java to guess.
>
> > ...
> > otherwise I see no other way than keeping a weak identity mapping
> > from objects to integral type values, the aforementioned unique
> > integers.
>
>Then is there a reason not to do that? Presumably only objects to which
>id() is actually applied need to become keys in such a mapping, and if so
>only id() users pay the price.
indeed is what I did, but that's why I want to reduce id(.) usage if possible
> > Likely using a type for which a counter to get fresh unique
> > integers cheaply will not overflow too quickly.
>
>If it's a weak-keyed dict you could also reuse the integer values associated
>with keys that go away.
for the moment I'm using 64 bits without reuse. I made the maybe silly
computation that
at the (for the moment) unrealist rate of a fresh id request per 1ns, it
will need
some years to overflow.
> > Or instead of the mapping attach such integrals value to each
> > object. The latter is not an option for Jython, because we cannot
> > attach things to general Java objects we have to deal with.
>
>Then why bring it up <wink>?
>
>Note that I don't object to introducing a mechanism that copy etc can use
>that's highly efficient under all implementations. But the introduction of
>such a mechanism isn't sufficient reason to get rid of the current id(),
>even if id() is horridly expensive in some implementations.
yes, that would be a reasonable compromise, basically as implemented the
new Jython id is costly a bit in speed (not so relevant) and then memory if
one asks the id of a lot of long lived objects, so users should be aware of
this and in case stear away from id, having copy.deepcopy etc not using
id(.) would help with that. Deprecating maybe is too much but at least
making users aware that id() is horridly expensive in some implementations
<wink>.
regards.
More information about the Python-Dev
mailing list