is implemented with id ?

Chris Angelico rosuav at gmail.com
Sun Nov 4 04:19:55 CET 2012


On Sun, Nov 4, 2012 at 2:10 PM, Steven D'Aprano
<steve+comp.lang.python at pearwood.info> wrote:
> /* Shortcut for empty or interned objects */
> if (v == u) {
>     Py_DECREF(u);
>     Py_DECREF(v);
>     return 0;
> }
> result = unicode_compare(u, v);
>
> where v and u are pointers to the unicode object.

There's a shortcut if they're the same. There's no shortcut if they're
both interned and have different pointers, which is a guarantee that
they're distinct strings. They'll still be compared char-for-char
until there's a difference.

But it probably isn't enough of a performance penalty to be concerned
with. It's enough to technically prove the point that 'is' is faster
than '==' and is still safe if both strings are interned; it's not
enough to make 'is' better than '==', except in very specific
situations.

ChrisA



More information about the Python-list mailing list