[Tutor] Loop comparison

Stefan Behnel stefan_ml at behnel.de
Fri Apr 16 13:03:02 CEST 2010


Steven D'Aprano, 16.04.2010 12:00:
> On Fri, 16 Apr 2010 06:29:40 pm Alan Gauld wrote:
>> "Stefan Behnel"  wrote
>>
>>>      import cython
>>>
>>>      @cython.locals(result=cython.longlong, i=cython.longlong)
>>>      def add():
>>>          result = 0
>>>          for i in xrange(1000000000):
>>>              result += i
>>>          return result
>>>
>>>      print add()
> [...]
>> Or is cython doing the precalculation optimisations you mentioned?
>> And if so when does it do them? Because surely, at some stage, it
>> still has to crank the numbers?
>>
>> (We can of course do some fancy math to speed this particular
>> sum up since the result for any power of ten has a common pattern,
>> but I wouldn't expect the compiler optimiser to be that clever)
>
> No fancy maths needed, although I'd be amazed (in a good way) to learn
> that compiler compiler optimizers recognised this case! Are optimizing
> compilers really that clever these days?

If I was writing an optimising C compiler, I'd certainly put this in to 
show off in common benchmarks. ;-)

Stefan



More information about the Tutor mailing list