Here's the simple benchmark; start = time.time() for x in xrange(3): for y in xrange(10000000): pass print 'xRange %s' % (time.time() - start)
start = time.time() for x in range(3): for y in range(10000000): pass print 'Range %s' % (time.time() - start) Here's what I get; xRange 92.5529999733 Range 95.2669999599 Not a lot of difference. Range is slower but not by much. I know that range builds a list then iterates through it. I thought that xrange just kept a counter that was incremented and returned with each call. No list was ever created. If that's true (and I guess it's not), xrange would be much faster than range. It seems almost identical. Given the amount of performance difference, I don't see why xrange even exists. P.S. I searched google again to try and find out more about range vs. xrange and this thread came up first on the list. That was strange. I thought I'd found someone else asking the same question as me until I clicked on the link and found out it actually was me. -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Behalf Of Bjoern Schliessmann Sent: Thursday, December 06, 2007 3:33 PM To: python-list@python.org Subject: Re: I'm missing something here with range vs. xrange Joe Goldthwaite wrote: > I read that the range function builds a list and that xrange > returns an iterator and is therefore more efficient. This is generally not true. > In my testing, they both come out to almost exactly the same > performance wise. Did something get changed in Python 2.4 to make > them identical? No. Try again with a list of length 10000000. Regards, Björn -- BOFH excuse #359: YOU HAVE AN I/O ERROR -> Incompetent Operator error -- http://mail.python.org/mailman/listinfo/python-list -- http://mail.python.org/mailman/listinfo/python-list