On Sat, 13 Jan 2007 22:05:53 +0000, Neil Cerutti wrote: >> Anyone want to argue that this is a worthwhile optimization? :) > > Perhaps. But first test it with "==".
Oh the ignominy! That's what happens when I run code at 6am :( >>> x = CompareWithIdentity(1); y = CompareWithIdentity(1) >>> timeit.Timer("x == y", "from __main__ import x,y").repeat() [2.2971229553222656, 2.2821698188781738, 2.2767620086669922] >>> timeit.Timer("x == x", "from __main__ import x,y").repeat() [1.6935880184173584, 1.6783449649810791, 1.6613109111785889] >>> x = Compare(1); y = Compare(1) >>> timeit.Timer("x == y", "from __main__ import x,y").repeat() [2.1717329025268555, 2.1361908912658691, 2.1338419914245605] So for this simple case, testing for identity is a factor of 1.3 faster when the objects are identical, and a factor of 1.1 slower if they aren't. That suggests that if about 33% of your comparisons match by identity, you'll break-even; any less than that, and the optimization is actually a pessimation. -- Steven. -- http://mail.python.org/mailman/listinfo/python-list