Monte Carlo Method and pi

Tim Hochberg tim.hochberg at ieee.org
Mon Jul 12 23:37:43 EDT 2004


beliavsky at aol.com wrote:
> Tim Hochberg <tim.hochberg at ieee.org> wrote:
[HACK]
>>If one takes into the accout the speed difference of the two CPUs this 
>>puts the both the numarray and psyco solutions within about 50% of the 
>>Fortran solution, which I'm impressed by. Of course, the Fortran code 
>>uses x**2 instead of x*x, so it too, might be sped by some tweaks.
>>
> 
> 
> With Compaq Visual Fortran, the speed with x**2 and x*x are the same. Recently
> on comp.lang.fortran, a Fortran expert opined that a compiler that did not
> optimize the calculation of integer powers to be as fast as the hand-coded
> equivalent would not be taken seriously.

I suppose that's not suprising. In that case, I'm more impressed with 
the psyco results than I was. Particularly since Psycos floating point 
support is incomplete.

> Having to write out integer powers in Python is awkward, although the performance
> improvement may be worth it. The code x*x*x*x is less legible than x**4,
> especially if 'x' is replaced 'longname[1,2,3]'. 

I think that this is something that Psyco could optimize. However, 
currently psyco just punts on pow, passing it off to Python.

> Often, what you want to compute powers of is itself an expression. Is Python
> with Psyco able to run code such as 
> 
> z = sin(x)*sin(x)
> 
> as fast as 
> 
> y = sin(x)
> z = y*y ?

Dunno. I'll check...

> Does it make two calls to sin()? There is a performance hit for 'y = sin(x)*sin(x)'
> when not using Psyco.

It appears that it does not make this optimization. I suppose that's not 
suprising since my understanding is that Psyco generates really simple 
machine code.

-tim




More information about the Python-list mailing list