Python and the need for speed
bart4858 at gmail.com
bart4858 at gmail.com
Wed Apr 12 07:48:05 EDT 2017
On Wednesday, 12 April 2017 10:57:10 UTC+1, bart... at gmail.com wrote:
> On Wednesday, 12 April 2017 07:48:57 UTC+1, Steven D'Aprano wrote:
> > for i in range(10):
> > answer += 1
> > So... how exactly does the compiler prohibit stupid code?
> And this lookup happens for every loop iteration.
I've just looked at byte-code for that loop (using an on-line Python as I don't have it on this machine). I counted 7 byte-codes that need to be executed per iteration, plus five to set up the loop, one of which needs to call a function.
My language does the same loop with only 4 byte-codes. Loop setup needs 2 (to store '10' into the loop counter).
It also has the option of using a loop with no control variable (as it's not used here). Still four byte-codes, but the looping byte-code is a bit faster.
Plus there is the option of using ++answer instead of answer += 1. Now there are only two byte-codes! (NB don't try ++ in Python.)
These are straightforward language enhancements.
--
bartc
More information about the Python-list
mailing list