Completely unscientific microbenchmarks: ([gist](https://gist.github.com/stratoukos/dcde41ee0903dcdd577a))

   >>> from timeit import Timer

    ## creation
    # tuple
   >>> Timer('(1, 2, 3, 4, 5)').timeit()
    0.02694106101989746

    # namedtuple with args
   >>> Timer('T(1, 2, 3, 4, 5)', setup='''
    from collections import namedtuple
    T = namedtuple("T", "a b c d e")'''
    ).timeit()
    0.773979902267456

    # namedtuple with kwargs
   >>> Timer('T(a=1, b=2, c=3, d=4, e=5)', setup='''
    from collections import namedtuple
    T = namedtuple("T", "a b c d e")'''
    ).timeit()
    1.155663013458252

    ## item access
    # tuple
>>> Timer('t[0], t[1], t[2], t[3], t[4]', setup='t = (1, 2, 3, 4, 5)').timeit()
    0.3240630626678467

    # namedtuple with indices
   >>> Timer('t[0], t[1], t[2], t[3], t[4]', setup='''
    from collections import namedtuple
    T = namedtuple("T", "a b c d e")
    t = T(1, 2, 3, 4, 5)'''
    ).timeit()
    0.2994410991668701

    # namedtuple with attributes
   >>> Timer('t.a, t.b, t.c, t.d, t.e', setup='''
    from collections import namedtuple
    T = namedtuple("T", "a b c d e")
    t = T(1, 2, 3, 4, 5)'''
    ).timeit()
    0.9363529682159424

It seems that the only significant slowdown is on a namedtuple's creation. I imagine the impact would be negligible on a complete request-response cycle, but that would have to be tested.

Accessing a namedtuple's items using attributes is also somewhat slower, but this wouldn't be a problem. Existing code would continue to work with the same performance and users could decide for themselves which way to access a namedtuple's items for new code.



On 22 Feb 2014, at 18:37, Florian Apolloner wrote:

On Saturday, February 22, 2014 5:24:39 PM UTC+1, Adam Kaliński wrote:

What do you guys think?


Sounds good, you might check if namedtuple has negative performance effects (I doubt it, but who knows). The reason we didn't add it yet is that it
just exists since 2.6.

cheers,
Florian

--
You received this message because you are subscribed to the Google Groups "Django developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-developers+unsubscr...@googlegroups.com. To post to this group, send email to django-developers@googlegroups.com.
Visit this group at http://groups.google.com/group/django-developers.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-developers/61b1a5f0-1d1c-480d-87cd-639c728327a7%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

--
You received this message because you are subscribed to the Google Groups "Django 
developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-developers+unsubscr...@googlegroups.com.
To post to this group, send email to django-developers@googlegroups.com.
Visit this group at http://groups.google.com/group/django-developers.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-developers/699D6AD0-A3F2-425A-805D-8376098707B4%40gmail.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to