#8309: speedup prime range
-----------------------------+----------------------------------------------
   Reporter:  robertwb       |       Owner:  was         
       Type:  defect         |      Status:  needs_review
   Priority:  major          |   Milestone:  sage-4.3.4  
  Component:  number theory  |    Keywords:              
     Author:                 |    Upstream:  N/A         
   Reviewer:                 |      Merged:              
Work_issues:                 |  
-----------------------------+----------------------------------------------
Changes (by robertwb):

  * status:  needs_info => needs_review


Comment:

 BEFORE

 {{{
 sage: timeit("prime_range(10)", number=10000)
 10000 loops, best of 3: 57.8 µs per loop
 sage: timeit("prime_range(100)", number=10000)
 10000 loops, best of 3: 61.2 µs per loop
 sage: timeit("prime_range(1000)", number=10000)
 10000 loops, best of 3: 102 µs per loop
 sage: timeit("prime_range(1000,2000)", number=10000)
 10000 loops, best of 3: 123 µs per loop
 sage: timeit("prime_range(1e6)")
 5 loops, best of 3: 36.9 ms per loop
 sage: timeit("prime_range(2e6)")
 5 loops, best of 3: 69.7 ms per loop
 sage: timeit("prime_range(2e6)")
 5 loops, best of 3: 69.7 ms per loop
 sage: timeit("prime_range(1e6,2e6)")
 5 loops, best of 3: 40.6 ms per loop
 sage: timeit("prime_range(1e6,1e6+100)")
 25 loops, best of 3: 8.21 ms per loop
 }}}

 AFTER

 {{{
 sage: timeit("prime_range(10)", number=10000)
 10000 loops, best of 3: 969 ns per loop
 sage: timeit("prime_range(100)", number=10000)
 10000 loops, best of 3: 3.24 µs per loop
 sage: timeit("prime_range(1000)", number=10000)
 10000 loops, best of 3: 30.3 µs per loop
 sage: timeit("prime_range(1000,2000)", number=10000)
 10000 loops, best of 3: 22.2 µs per loop
 sage: timeit("prime_range(1e6)")
 25 loops, best of 3: 28.5 ms per loop
 sage: timeit("prime_range(2e6)")
 5 loops, best of 3: 53.8 ms per loop
 sage: timeit("prime_range(2e6)")
 5 loops, best of 3: 55 ms per loop
 sage: timeit("prime_range(1e6,2e6)")
 25 loops, best of 3: 25.6 ms per loop
 sage: timeit("prime_range(1e6,1e6+100)")
 625 loops, best of 3: 259 µs per loop
 }}}

 AFTER INTS

 {{{
 sage: timeit("prime_range(10, py_ints=True)", number=10000)
 10000 loops, best of 3: 1.27 µs per loop
 sage: timeit("prime_range(100, py_ints=True)", number=10000)
 10000 loops, best of 3: 3.11 µs per loop
 sage: timeit("prime_range(1000, py_ints=True)", number=10000)
 10000 loops, best of 3: 11.5 µs per loop
 sage: timeit("prime_range(1000, 2000, py_ints=True)", number=10000)
 10000 loops, best of 3: 11.7 µs per loop
 sage: timeit("prime_range(1e6, py_ints=True)")
 125 loops, best of 3: 4.1 ms per loop
 sage: timeit("prime_range(2e6, py_ints=True)")
 125 loops, best of 3: 7.9 ms per loop
 sage: timeit("prime_range(2e6, py_ints=True)")
 125 loops, best of 3: 7.83 ms per loop
 sage: timeit("prime_range(1e6,2e6, py_ints=True)")
 125 loops, best of 3: 3.88 ms per loop
 sage: timeit("prime_range(1e6,1e6+100, py_ints=True)")
 625 loops, best of 3: 260 µs per loop
 }}}

 I also cleaned up the patch a bit (e.g. using pari.init_primes rather than
 resetting diffptr manually).

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/8309#comment:3>
Sage <http://www.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