#20731: shortcut coercion for Integer-Rational operations
--------------------------------------+----------------------------
       Reporter:  vdelecroix          |        Owner:
           Type:  enhancement         |       Status:  needs_review
       Priority:  major               |    Milestone:  sage-7.3
      Component:  coercion            |   Resolution:
       Keywords:  sd74                |    Merged in:
        Authors:  Vincent Delecroix   |    Reviewers:
Report Upstream:  N/A                 |  Work issues:
         Branch:  u/vdelecroix/20731  |       Commit:
   Dependencies:                      |     Stopgaps:
--------------------------------------+----------------------------
Changes (by vdelecroix):

 * status:  new => needs_review
 * branch:   => u/vdelecroix/20731


Old description:

> Doing some shortcut to coercion actually fasten the code
>
> Old version
> {{{
> sage: z = 2
> sage: q = QQ((-1,5))
> sage: %timeit z + q
> sage: %timeit q + z
> sage: %timeit z - q
> sage: %timeit q - z
> sage: %timeit z * q
> sage: %timeit q * z
> sage: %timeit z / q
> sage: %timeit q / z
> }}}
> New version
> {{{
> sage: z = 2
> sage: q = QQ((-1,5))
> sage: %timeit z + q
> 1000000 loops, best of 3: 265 ns per loop
> sage: %timeit q + z
> 1000000 loops, best of 3: 323 ns per loop
> sage: %timeit z - q
> 1000000 loops, best of 3: 261 ns per loop
> sage: %timeit q - z
> 1000000 loops, best of 3: 319 ns per loop
> sage: %timeit z * q
> 1000000 loops, best of 3: 341 ns per loop
> sage: %timeit q * z
> 1000000 loops, best of 3: 446 ns per loop
> sage: %timeit z / q
> 1000000 loops, best of 3: 341 ns per loop
> sage: %timeit q / z
> 1000000 loops, best of 3: 396 ns per loop
> }}}

New description:

 Doing some shortcut to coercion actually fasten the code by a factor 3...

 Old version
 {{{
 sage: z = 2
 sage: q = QQ((-1,5))
 sage: sage: %timeit z + q
 1000000 loops, best of 3: 930 ns per loop
 sage: sage: %timeit q + z
 1000000 loops, best of 3: 930 ns per loop
 sage: sage: %timeit z - q
 1000000 loops, best of 3: 848 ns per loop
 sage: sage: %timeit q - z
 1000000 loops, best of 3: 776 ns per loop
 sage: sage: %timeit z * q
 1000000 loops, best of 3: 1.15 µs per loop
 sage: sage: %timeit q * z
 1000000 loops, best of 3: 1.17 µs per loop
 sage: sage: %timeit z / q
 1000000 loops, best of 3: 1.09 µs per loop
 sage: sage: %timeit q / z
 1000000 loops, best of 3: 1.1 µs per loop
 }}}
 New version
 {{{
 sage: z = 2
 sage: q = QQ((-1,5))
 sage: %timeit z + q
 1000000 loops, best of 3: 265 ns per loop
 sage: %timeit q + z
 1000000 loops, best of 3: 323 ns per loop
 sage: %timeit z - q
 1000000 loops, best of 3: 261 ns per loop
 sage: %timeit q - z
 1000000 loops, best of 3: 319 ns per loop
 sage: %timeit z * q
 1000000 loops, best of 3: 341 ns per loop
 sage: %timeit q * z
 1000000 loops, best of 3: 446 ns per loop
 sage: %timeit z / q
 1000000 loops, best of 3: 341 ns per loop
 sage: %timeit q / z
 1000000 loops, best of 3: 396 ns per loop
 }}}

--

--
Ticket URL: <http://trac.sagemath.org/ticket/20731#comment:1>
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 unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.

Reply via email to