Chris Angelico wrote: > I think this is an artifact of Python not having an empty set literal. > [snip] > When both use the constructor call or both use a literal, the > difference is far smaller. I'd call this one a wash.
Ah, good catch. I hadn't considered that it would make a substantial difference, but that makes sense. Here's an additional comparison between "{}" and "dict()" to confirm it: >>> timeit.timeit("{}", number=100_000_000) 2.1038335599987477 >>> timeit.timeit("dict()", number=100_000_000) 10.225583500003268 Some more in-depth comparisons might be required for addition of single items to the containers. I might experiment further with this at some point in the next week or so, likely with implementing proper tests that omit the time to initialize the container. On Mon, Dec 23, 2019 at 10:09 PM Chris Angelico <ros...@gmail.com> wrote: > On Tue, Dec 24, 2019 at 1:57 PM Kyle Stanley <aeros...@gmail.com> wrote: > > Add (much faster for dicts): > > >>> timeit.timeit("s = set(); s.add(0)", number=100_000_000) > > 13.330938750001224 > > >>> timeit.timeit("d = {}; d[0] = None", number=100_000_000) > > 5.788865385999088 > > I think this is an artifact of Python not having an empty set literal. > > >>> timeit.timeit("s = set(); s.add(0)", number=100_000_000) > 13.275540543720126 > >>> timeit.timeit("d = dict(); d[0] = None", number=100_000_000) > 13.044076398015022 > >>> timeit.timeit("d = {}; d[0] = None", number=100_000_000) > 6.088695731014013 > >>> timeit.timeit("s = {1}; s.add(0)", number=100_000_000) > 9.260965215042233 > >>> timeit.timeit("d = {1:2}; d[0] = None", number=100_000_000) > 8.75433829985559 > > When both use the constructor call or both use a literal, the > difference is far smaller. I'd call this one a wash. > > ChrisA > _______________________________________________ > Python-Dev mailing list -- python-dev@python.org > To unsubscribe send an email to python-dev-le...@python.org > https://mail.python.org/mailman3/lists/python-dev.python.org/ > Message archived at > https://mail.python.org/archives/list/python-dev@python.org/message/ODZYHNI57MFZD3I7TGP3B3HJTRX36KGB/ > Code of Conduct: http://python.org/psf/codeofconduct/ >
_______________________________________________ Python-Dev mailing list -- python-dev@python.org To unsubscribe send an email to python-dev-le...@python.org https://mail.python.org/mailman3/lists/python-dev.python.org/ Message archived at https://mail.python.org/archives/list/python-dev@python.org/message/COUO6PFHUADHYP5KSHMPHPIUCOAXS56L/ Code of Conduct: http://python.org/psf/codeofconduct/