Xiang Zhang added the comment: I doubt how many memcpy could benefit. Two pass does not necessarily make faster. I make a simple test:
With dictresize3, (I make insert_index inline): [bin]$ ./python3 -m perf timeit -s 'd = {i:i for i in range(6)}' 'dict(d)' .................... Median +- std dev: 441 ns +- 21 ns [bin]$ ./python3 -m perf timeit -s 'd = {i:i for i in range(60)}' 'dict(d)' .................... Median +- std dev: 2.02 us +- 0.10 us [bin]$ ./python3 -m perf timeit -s 'd = {i:i for i in range(600)}' 'dict(d)' .................... Median +- std dev: 18.1 us +- 0.9 us With dictresize4: [bin]$ ./python3 -m perf timeit -s 'd = {i:i for i in range(6)}' 'dict(d)' .................... Median +- std dev: 448 ns +- 33 ns [bin]$ ./python3 -m perf timeit -s 'd = {i:i for i in range(60)}' 'dict(d)' .................... Median +- std dev: 2.04 us +- 0.09 us [bin]$ ./python3 -m perf timeit -s 'd = {i:i for i in range(600)}' 'dict(d)' .................... Median +- std dev: 18.2 us +- 0.1 us Just like INAKA states, there is hardly any difference. And you need 2 pass for dicts with deleted member. ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue28199> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com