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


Reply via email to