[Python-ideas] a new namedtuple

Ethan Furman ethan at stoneleaf.us
Tue Jul 18 14:38:46 EDT 2017


On 07/17/2017 09:06 PM, David Mertz wrote:
> On Jul 17, 2017 7:56 PM, "Ethan Furman" <ethan at stoneleaf.us <mailto:ethan at stoneleaf.us>> wrote:
>
>     On 07/17/2017 06:34 PM, Steven D'Aprano wrote:
>
>         On Mon, Jul 17, 2017 at 05:01:58PM -0700, Ethan Furman wrote:
>
>
>             Guido has decreed that namedtuple shall be reimplemented with speed in mind.
>
>             I haven't timed it (I'm hoping somebody will volunteer to be the bench mark
>             guru), I'll offer my NamedTuple implementation from my aenum [1] library.
>
>
>         With respect Ethan, if you're going to offer up NamedTuple as a faster
>         version of namedtuple, you should at least do a quick proof of
>         concept to demonstrate that it actually *is* faster.
>
>
>     I suck at benchmarking, so thank you for providing those quick-and-dirty hints.
>
>
>         Full bench marking
>         can wait, but you should be able to do at least something like:
>
>
>         python3 -m timeit --setup "from collections import namedtuple" \
>               "K = namedtuple('K', 'a b c')"
>
>
>     546 usec
>
>
>         versus
>
>         python3 -m timeit --setup "from aenum import NamedTuple" \
>               "K = NamedTuple('K', 'a b c')"
>
>
>     250 usec
>
>
>     So it seems to be faster!  :)

> Can you try across a range of tuple sizes? E.g. what about with 100 items? 1000?

I tried 26 and 52 (which really seems unlikely for a named tuple), and NamedTuple was consistently faster by about 250 
usec.  Using a metaclass is off the table, but this is still interesting data for me.  :)

--
~Ethan~



More information about the Python-ideas mailing list