[Python-Dev] Joys of Optimization

Brett C. bac at OCF.Berkeley.EDU
Wed Mar 17 22:40:17 EST 2004


Raymond Hettinger wrote:

> For those with an interest, here are some timing scorecards which track
> the performance of dictionary iteration:
> 
> 
> C:\python24\python timedictiter.py
> 0.638557468278 keys()
> 0.648748721903 values()
> 2.97803432843 items()
> 1.04057057611 list(d)
> 1.19934712281 tuple(d)
> 2.23167921018 for k in d.iterkeys(): pass
> 2.2001936003 for v in d.itervalues(): pass
> 4.07347675958 for k, v in d.iteritems(): pass
> 
> C:\pydev>\python23\python timedictiter.py
> 0.886520893746 keys()
> 0.861855713304 values()
> 3.44381233343 items()
> 6.86479910827 list(d)
> 2.48302854557 tuple(d)
> 2.85350994821 for k in d.iterkeys(): pass
> 2.8332120887 for v in d.itervalues(): pass
> 6.70084312509 for k, v in d.iteritems(): pass
> 
> C:\pydev>\python22\python timedictiter.py
> 0.81167636065 keys()
> 0.893352218441 values()
> 2.99887443638 items()
> 6.83444576677 list(d)
> 2.48634656967 tuple(d)
> 4.54763489163 for k in d.iterkeys(): pass
> 4.53761544779 for v in d.itervalues(): pass
> 7.77635645921 for k, v in d.iteritems(): pass
> 


Interesting how items() slowed down between 2.2 and 2.3 but is now a 
sliver faster than 2.2 was.

All very cool, Raymond.  Cleaner code and faster to boot!  Thanks for 
doing this.

-Brett



More information about the Python-Dev mailing list