sage: timeit('for x in sxrange(1,100000): x.is_square()', number=25)
25 loops, best of 3: 46.3 ms per loop

Still 25% gain....

On 8 jun, 00:43, Yann <[email protected]> wrote:
> You migth also try this:
>
> timeit('for x in sxrange(1,100000): x.is_square()', number=25)
>
> On Jun 7, 6:59 pm, Rolandb <[email protected]> wrote:
>
> > Tnx!
> > int* did the tric. Maybe an idea to mention this in the Cython manual.
>
> > Look at the amazing difference in speed....
>
> > sage: timeit('for x in xrange(1,100000): is_square(x,True)',number=25)
> > 25 loops, best of 3: 1.35 s per loop
>
> > sage: timeit('for x in xrange(1,100000):
> > c_is_square(x,True)',number=25)
> > 25 loops, best of 3: 37.2 ms per loop
>
> > The latter is due to a more refined exclusion method as for instance
> > descibed in
> >  http://stackoverflow.com/questions/295579/fastest-way-to-determine-if...
>
> > Roland
>
> > On 7 jun, 18:15, Robert Bradshaw <[email protected]> wrote:
>
> > > On Jun 7, 2010, at 8:04 AM, Rolandb wrote:
>
> > > > Hi,
>
> > > > Using cython, I want to make optimal use of static data. The reason is
> > > > that lookup is (often) much faster than recalulating. I now use:
>
> > > > cdef list nice_list_name=[3 , 3 , 3 , 3 , 3 , 3 , 4 , 4 , 4 , 4 , 4 ,
> > > > 4 , 4 , 4 , 4 , 5 , 5 , 5 , et cetera]
>
> > > > But this didn't increase the speed. Suggestions are appriciated!
>
> > > Perhaps in your case lookup isn't faster than recalculating? If it's  
> > > about a tie, re-calculating is probably better, as it's less of a  
> > > "black box." Here you're using a Python list of ints, if you really  
> > > want speed you'd want to use a int*. You could globally calculate this  
> > > the first time it's used and use a lookup from then on.
>
> > > - Robert

-- 
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/sage-support
URL: http://www.sagemath.org

Reply via email to