Message181967
When two implementations give the same result, I use to run micro benchmarks to give me an hint.
I just noticed that attrgetter is slower than a lambda here:
$ python3.3 -m timeit -s 'from operator import attrgetter; n1 = attrgetter("__name__"); n2 = lambda s: s.__name__' 'rv = n1(int)'
1000000 loops, best of 3: 0.275 usec per loop
$ python3.3 -m timeit -s 'from operator import attrgetter; n1 = attrgetter("__name__"); n2 = lambda s: s.__name__' 'rv = n2(int)'
1000000 loops, best of 3: 0.347 usec per loop
(verified with 2.6, 2.7 and 3.3. But for 2.5 attrgetter is faster)
The function operator.itemgetter does not have same issue.
$ python3.3 -m timeit -s 'from operator import itemgetter; n1 = itemgetter("foot"); n2 = lambda s: s["foot"]; d = {"foot": 42}' 'rv = n1(d)'
10000000 loops, best of 3: 0.122 usec per loop
$ python3.3 -m timeit -s 'from operator import itemgetter; n1 = itemgetter("foot"); n2 = lambda s: s["foot"]; d = {"foot": 42}' 'rv = n2(d)'
10000000 loops, best of 3: 0.176 usec per loop |
|
Date |
User |
Action |
Args |
2013-02-12 16:43:15 | flox | set | recipients:
+ flox |
2013-02-12 16:43:15 | flox | set | messageid: <1360687395.37.0.294029575872.issue17194@psf.upfronthosting.co.za> |
2013-02-12 16:43:15 | flox | link | issue17194 messages |
2013-02-12 16:43:14 | flox | create | |
|