Serhiy Storchaka added the comment: The PR adds over 50 lines of code for optimising not very often used feature. There are two obvious ways of copying, dict(d) and d.copy(), the PR optimises just the latter one, and I'm not sure this is the most used way. The PR duplicates the low-level code, that increases maintainability cost.
The PR changes the behavior. Currently the effect of copying is compacting the dict. >>> import sys >>> sys.getsizeof(d) 41020 >>> sys.getsizeof(d.copy()) 41020 >>> sys.getsizeof(dict(d)) 41020 >>> for i in range(1000): del d[i] ... >>> sys.getsizeof(dict(d)) 20544 >>> sys.getsizeof(d.copy()) 20544 >>> sys.getsizeof(d) 41020 >>> import sys >>> d = dict.fromkeys(range(2000)) >>> sys.getsizeof(d) 41020 >>> sys.getsizeof(d.copy()) 41020 >>> d = dict.fromkeys(range(2000)) >>> for i in range(1999): del d[i] ... >>> sys.getsizeof(d) 41020 >>> sys.getsizeof(d.copy()) 136 The PR preserves non compact layout in the copy. ---------- nosy: +serhiy.storchaka _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue31179> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com