Opened 6 years ago

Closed 6 years ago

#12527 closed enhancement (fixed)

Use cached_method for FractionField.is_exact

Reported by: nthiery Owned by: tbd
Priority: major Milestone: sage-5.0
Component: performance Keywords:
Cc: king Merged in: sage-5.0.beta9
Authors: Nicolas M. Thiéry Reviewers: David Loeffler
Report Upstream: N/A Work issues:
Branch: Commit:
Dependencies: Stopgaps:

Description

Before the patch:

    sage: sage: P = ZZ['x']
    sage: R = P.fraction_field()
    sage: %timeit R.is_exact()
    625 loops, best of 3: 3.7 µs per loop

After the patch:

    sage: R=FractionField(ZZ['x'])
    sage: %timeit R.is_exact()
    625 loops, best of 3: 485 ns per loop

Thank you Simon King for #11115!

This is non negligible because is_exact is called basically each time an element is constructed or arithmetic is performed. Here we have a 10% improvement on constructing an element:

Before the patch:

    sage: x = P.gen()
    sage: y = x+1
    sage: %timeit R(x,y,coerce=False)
    625 loops, best of 3: 17.7 µs per loop

After the patch:

    sage: x = P.gen()
    sage: y = x+1
    sage: %timeit R(x,y,coerce=False)
    625 loops, best of 3: 16 µs per loop

Attachments (1)

trac_12527-fraction_field-is_exact_optimization-nt.patch (1.3 KB) - added by nthiery 6 years ago.

Download all attachments as: .zip

Change History (4)

comment:1 Changed 6 years ago by nthiery

  • Status changed from new to needs_review

Simon: you deserve this trivial review, for all your hard work on other related tickets :-)

comment:2 Changed 6 years ago by davidloeffler

  • Reviewers changed from Simon King to David Loeffler
  • Status changed from needs_review to positive_review

Isn't patchbot great? It makes reviewing patches like this a 10-second job. Sorry Simon!

comment:3 Changed 6 years ago by jdemeyer

  • Merged in set to sage-5.0.beta9
  • Resolution set to fixed
  • Status changed from positive_review to closed
Note: See TracTickets for help on using tickets.