Neal Norwitz wrote:

> I've profiled various combinations.  Here are the various results
> normalized doing xrange(0, 1e6, 1):
> 
> Run on all integer (32-bit) values for start, step, end:
> C xrange and iter:  1
> Py xrange w/C iter: 1

in real life, loops are a lot shorter than that.

if you take that into account, you don't even have to run the benchmark 
to realize that calling a Python function and checking the arguments 
before calling a C function takes more time than calling a C function.

even if you skip the "check the arguments" part, you take a 5% hit:

 > timeit -s"def myxrange(a,xrange=xrange): return xrange
   (a)" "for i in myxrange(100): pass"
100000 loops, best of 3: 5.28 usec per loop

 > timeit "for i in xrange(100): pass"
100000 loops, best of 3: 4.98 usec per loop

 > timeit -s"def myxrange(a,b=None,c=None,xrange=xrange):
   return xrange(a,b,c)" "for i in myxrange(0,100,1): pass"
100000 loops, best of 3: 5.58 usec per loop

 > timeit "for i in xrange(0,100,1): pass"
100000 loops, best of 3: 5.27 usec per loop

I doubt adding more code to the myxrange function will speed it up...

</F>

_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to