Python and the need for speed

bart4858 at gmail.com bart4858 at gmail.com
Wed Apr 12 19:30:38 EDT 2017


On Thursday, 13 April 2017 00:09:35 UTC+1, Gregory Ewing  wrote:
> bart4858 at gmail.com wrote:
> 
> > But the language can also play a part in not allowing certain things to be
> > expressed naturally. So the for-loop in the example has to have a
> > control-variable even if it's not referenced.
> 
> If the compiler can recognise when code is "stupid", it's
> probably capable of doing something more intelligent than
> just rejecting it outright.
> 
> E.g. it could notice that a loop variable wasn't used
> anywhere in the function and optimise it out. And it could
> recognise x += 1 and emit an ADD_ONE bytecode for it.
> Etc.

Maybe. (Although I think Python would have difficulty in turning x+=1 into a single opcode, if using normal object references and a shared object model.)

But I wouldn't be happy about a language deciding my code is 'stupid'. I might for example have an N-times loop containing x+=1 because I want to know how long it takes to execute x+=1 N times. (This is a common problem with benchmarking code actually, as you can end up measuring how long it takes /not/ to do something instead of doing it!)

Anyway that loop example (I think it was Steve's) was a simple illustration. It will usually be harder to figure out if a bit of code is rational.

Even with x+=1, isn't it possible to override the + or += operation with user code? Code which change the handling method at each iteration. This is dynamism making a rod for its own back. 99.99...% of the time that won't happen, but...


-- 
bartc



More information about the Python-list mailing list