I did my own tests with similar results:
 
http://nbviewer.ipython.org/gist/adamkal/9171081

looks like creating a namedtuple is also quite time consuming and it's even 
hard to compare to tuple here.
Good thing is that we have backward compatibility that has no overhead on 
accessing data. 


W dniu sobota, 22 lutego 2014 19:01:21 UTC+1 użytkownik Stratos Moros 
napisał:
>
> 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 [email protected] <javascript:>.
> To post to this group, send email to [email protected]<javascript:>
> .
> 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 [email protected].
To post to this group, send email to [email protected].
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/d61461bf-ceb3-4c29-a883-f5d905ce2539%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to