#6118: [with second patch, needs review] integer shifting slow
------------------------------+---------------------------------------------
 Reporter:  robertwb          |       Owner:  somebody  
     Type:  defect            |      Status:  new       
 Priority:  major             |   Milestone:  sage-4.0.1
Component:  basic arithmetic  |    Keywords:            
------------------------------+---------------------------------------------

Comment(by robertwb):

 Here's after just the first patch:

 {{{
 sage: a = 5; b = 6; c = 6r
 sage: %timeit a << b
 10000000 loops, best of 3: 195 ns per loop
 sage: %timeit a >> b
 1000000 loops, best of 3: 218 ns per loop
 sage: %timeit a << c
 10000000 loops, best of 3: 188 ns per loop
 sage: %timeit a >> c
 1000000 loops, best of 3: 217 ns per loop

 sage: b = -6; c = -6r
 sage: %timeit a << b
 1000000 loops, best of 3: 204 ns per loop
 sage: %timeit a >> b
 10000000 loops, best of 3: 196 ns per loop
 sage: %timeit a >> c
 10000000 loops, best of 3: 190 ns per loop
 sage: %timeit a << c
 1000000 loops, best of 3: 222 ns per loop
 }}}

 and after the second patch

 {{{
 sage: sage: a = 5; b = 6; c = 6r
 sage: sage: %timeit a << b
 1000000 loops, best of 3: 192 ns per loop
 sage: sage: %timeit a >> b
 1000000 loops, best of 3: 204 ns per loop
 sage: sage: %timeit a << c
 1000000 loops, best of 3: 203 ns per loop
 sage: sage: %timeit a >> c
 1000000 loops, best of 3: 217 ns per loop
 sage:
 sage: sage: b = -6; c = -6r
 sage: sage: %timeit a << b
 1000000 loops, best of 3: 206 ns per loop
 sage: sage: %timeit a >> b
 1000000 loops, best of 3: 197 ns per loop
 sage: sage: %timeit a >> c
 1000000 loops, best of 3: 203 ns per loop
 sage: sage: %timeit a << c
 1000000 loops, best of 3: 222 ns per loop
 }}}

 With repeated timings, the variance seems to be about 5 or so ns. The only
 significant differences are that Integer >> Integer is a bit faster with
 the second patch, and Integer << int and Integer >> int are faster with
 the first.

 I'm (pleasantly) surprised making it a cpdef function didn't slow it down.
 I don't think {{{shift_helper}}} needs to do error checking, and it seems
 odd to introduce a new auxiliary variable {{{normalize_Integer}}}.

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/6118#comment:6>
Sage <http://sagemath.org/>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
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-trac?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to