On Wed, Dec 29, 2021 at 8:07 PM Dieter Maurer <die...@handshake.de> wrote:
>
> Marco Sulla wrote at 2021-12-29 09:29 +0100:
> >On second thought, I think I'll do this for the pure py version. But I
> >will definitely not do this for the C extension
>
> Are you sure you need to implement your type in C at all?
>
> I made a small `timeit` test:
> ```
> >>> class cd(dict): pass
> ...
> >>> timeit("d[1]", "d={1:1}", globals=globals())
> 0.02474160000019765
> >>> timeit("d[1]", "d=cd({1:1})", globals=globals())
> 0.08281239100051607
> ```
> This means that for the above trivial case, access is 3.5 times slower
> (the difference is smaller for more complex cases when hashing
> becomes more expensive) but it is still only 83 ns per access.
> Thus, if your application is not highly dominated by dict accesses,
> the overall difference will not be large.

You forgot slots. The difference can be even smaller.

>>> class cd(dict): __slots__ = ()
...
>>> timeit("d[1]", "d={1:1}", globals=globals())
0.02511977031826973
>>> timeit("d[1]", "d=cd({1:1})", globals=globals())
0.0333079993724823

ChrisA
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to