ALAN GAULD wrote:
The precalculation optimisations are
taking place. If you pass it an argument to use for the upper limit of the
sequence the calculation time shoots up.
I'm still confused about when the addition takes place.
Surely the compiler has to do the addition, so it should be slower?
I assume you have to run the posted code through cython
prior to running it in Python?
You can probably tell that I've never used Cython! :-)
Alan G.
I've never used Cython either, but I'd guess that it's the C compiler
doing the extreme optimizing. If all the code, including the loop
parameters, are local, non-volatile, and known at compile time, the
compile could do the arithmetic at compile time, and just store a result
like res = 42;
Or it could notice that there's no I/O done, so that the program has
null effect. And optimize the whole thing into a "sys.exit()"
I don't know if any compiler does that level of optimizing, but it's
certainly a possibility. And such optimizations might not be legitimate
in stock Python (without type declarations and other assumptions),
because of the possibility of other code changing the type of globals,
or overriding various special functions.
DaveA
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor