Alexander Belopolsky <[email protected]> added the comment:
Note that issue8425a.diff leaves small_set.difference_update(large_dict)
unoptimized:
$ ./python.exe -m timeit -s "s = {1}; l = dict.fromkeys(range(1000));"
"s.difference_update(l)"
1000 loops, best of 3: 842 usec per loop
$ ./python.exe -m timeit -s "s = {1}; l = dict.fromkeys(range(1000));"
"s.difference(l)"
100000 loops, best of 3: 13.2 usec per loop
It would be easy to add an extra type check, but I noticed that
small_set.difference_update(large_dict.viewkeys()) is not optimized either:
$ ./python.exe -m timeit -s "s = {1}; l = dict.fromkeys(range(1000));"
"s.difference(l.viewkeys())"
1000 loops, best of 3: 842 usec per loop
It would be nice if there was a uniform C-API that would allow to uniformly
check that an object supports O(1) lookup and invoke such lookup efficiently.
I don't think such C-API exists at the moment.
I would like to hear what others have to say before adding optimizations to
the patch that go beyond the scope of this issue.
----------
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue8425>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com