4 ms·
Assuming this is Python 2.x (doesn't seem to be specified in the benchmark results), then the use of "range" is problematic (should be "xrange").
by mborch 12y ago
Assuming this is Python 2.x (doesn't seem to be specified in the benchmark results), then the use of "range" is problematic (should be "xrange").
- MrMeker 12y agoNot really. "range" returns a list, "xrange" returns an iterator. I assume that the list is much easier to reason about in a JIT. In python3, range is a type of its own and certainly more useful for in a JIT. https://docs.python.org/3/library/stdtypes.html#typesseq-range https://docs.python.org/3/library/stdtypes.html#typesseq-ran... https://docs.python.org/2/library/functions.html#range https://docs.python.org/2/library/functions.html#range
- mborch 12y agoHow is allocating and populating a Python list order to do a simple for loop in a tight inner loop not problematic? Neither CPython nor PyPy can optimize that out. As I said, this is assuming we're on Python 2.x.
- rguillebert 12y agoPyPy optimizes that out, you have a thing that looks exactly like a list, but is implemented differently under the hood
- shoyer 12y agoBased on the description in the docs (http://pythonhosted.org/hope/lang.html#loops http://pythonhosted.org/hope/lang.html#loops), my guess is that "for i in range(N)" is directly translated into something like "for (i = 0; i < N; i++)" in the C++.