On 3/17/2010 1:35 AM, Patrick Maupin wrote:
def a(s, count, lenfunc):
...     for i in xrange(count):
...        z = lenfunc(s)
...
>>>  a('abcdef', 100000000, len)
>>>  a('abcdef', 100000000, str.__len__)
Running cPython 2.6 on my machine, len() runs about 3 times faster
than str.__len__().  The overhead of checking that an object is usable
with a particular class method far outweighs the cost of creating the
bound method!

Wow, this so surprised me, that I had to try it with 3.1 (on winxp), and got a similar result (about 2.6x longer with str.__len__). This is a real lesson in measure, don't guess, and how premature 'optimization' may be a pessimization. Thanks.

Terry Jan Reedy



--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to