#4740: avoid creating unneeded homsets when coercing
-------------------------------+---------------------------
       Reporter:  mabshoff     |         Owner:  robertwb
           Type:  defect       |        Status:  needs_work
       Priority:  major        |     Milestone:  sage-5.11
      Component:  memleak      |    Resolution:
       Keywords:               |     Merged in:
        Authors:  Mike Hansen  |     Reviewers:
Report Upstream:  N/A          |   Work issues:
         Branch:               |  Dependencies:
       Stopgaps:               |
-------------------------------+---------------------------

Comment (by SimonKing):

 Interesting. I found the following, by inserting a print statement into
 `Homset.__init__`:
 {{{
 sage: F = GF(13)
 sage: x = F(234234)
 calling Homset Integer Ring Finite Field of size 13 Category of euclidean
 domains
 sage: x = F(234234)   # the homset is created only once, which is fine
 sage: t = F.coerce(F(234234))   # there is a homset created...
 calling Homset Finite Field of size 13 Finite Field of size 13 Category of
 rings
 sage: t = F.coerce(F(234234))   # ... repeatedly
 calling Homset Finite Field of size 13 Finite Field of size 13 Category of
 rings
 sage: t = F.coerce(F(234234))
 calling Homset Finite Field of size 13 Finite Field of size 13 Category of
 rings
 sage: I = F.coerce_map_from(F)  # creating a coerce map, the homset is
 created again, but...
 calling Homset Finite Field of size 13 Finite Field of size 13 Category of
 rings
 sage: t = F.coerce(F(234234))   # ... now the problem is fixed!
 sage: t = F.coerce(F(234234))
 }}}

 This seems to suggest that
  1. `F.coerce` seems to use a cached coerce map from F to F, but if it
 isn't cached, it would create the coerce map repeatedly.
  2. It re-creates the coercion map such that the parent of the coercion
 map is re-created as well.

--
Ticket URL: <http://trac.sagemath.org/ticket/4740#comment:14>
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 http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to