#4740: avoid creating unneeded homsets when coercing
------------------------------+-----------------------------
Reporter: mabshoff | Owner: robertwb
Type: defect | Status: needs_review
Priority: major | Milestone: sage-5.11
Component: memleak | Resolution:
Keywords: | Merged in:
Authors: Simon King | Reviewers:
Report Upstream: N/A | Work issues:
Branch: | Dependencies:
Stopgaps: |
------------------------------+-----------------------------
Changes (by {'newvalue': u'Simon King', 'oldvalue': u'Mike Hansen'}):
* status: needs_info => needs_review
* author: Mike Hansen => Simon King
Old description:
> Burcin reported at #4639:
> {{{
> sage: F = GF(13)
> sage: get_memory_usage()
> 708.02734375
> sage: for _ in xrange(10000):
> ....: t = F.coerce(F(234234))
> ....:
> sage: get_memory_usage()
> 728.15234375
> sage: for _ in xrange(100000):
> t = F.coerce(F(234234))
> ....:
> sage: get_memory_usage()
> 932.3125
> sage: for _ in xrange(100000):
> t = F.coerce(F(234234))
> ....:
> sage: get_memory_usage()
> 1136.35546875
> }}}
> Since the patch by RobertWB at that ticket fixes the issue Burcin
> reported, but not the original one I am moving it over to this ticket.
>
> Cheers,
>
> Michael
New description:
Burcin reported at #4639:
{{{
sage: F = GF(13)
sage: get_memory_usage()
708.02734375
sage: for _ in xrange(10000):
....: t = F.coerce(F(234234))
....:
sage: get_memory_usage()
728.15234375
sage: for _ in xrange(100000):
t = F.coerce(F(234234))
....:
sage: get_memory_usage()
932.3125
sage: for _ in xrange(100000):
t = F.coerce(F(234234))
....:
sage: get_memory_usage()
1136.35546875
}}}
Since the patch by RobertWB at that ticket fixes the issue Burcin
reported, but not the original one I am moving it over to this ticket.
Cheers,
Michael
__Apply__
- [attachment:trac4740-cache_coerce_from_self.patch]
--
Comment:
What do people think about the patch that I just attached?
We now have
{{{
sage: F = GF(13)
sage: F.coerce_map_from(F) is F.coerce_map_from(F)
True
sage: x = F(234234)
sage: %timeit t = F.coerce(x)
1000000 loops, best of 3: 862 ns per loop
}}}
and used to have
{{{
sage: F = GF(13)
sage: F.coerce_map_from(F) is F.coerce_map_from(F)
False
sage: x = F(234234)
sage: %timeit t = F.coerce(x)
10000 loops, best of 3: 132 us per loop
}}}
Apply trac4740-cache_coerce_from_self.patch
--
Ticket URL: <http://trac.sagemath.org/ticket/4740#comment:22>
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.