#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.