#16792: cached_function.clear_cache is inefficent
----------------------+----------------------------
   Reporter:  dkrenn  |            Owner:
       Type:  defect  |           Status:  new
   Priority:  major   |        Milestone:  sage-6.3
  Component:  misc    |         Keywords:
  Merged in:          |          Authors:
  Reviewers:          |  Report Upstream:  N/A
Work issues:          |           Branch:
     Commit:          |     Dependencies:
   Stopgaps:          |
----------------------+----------------------------
 {{{
 @cached_function
 def noop():
     return None

 R = Zmod(42)
 D = dict((x^k, R(k)^k) for k in srange(1000000))

 E = copy(D)
 timeit("E.clear()", number=1)

 noop.cache = copy(D)
 timeit("noop.clear_cache()", number=1)
 }}}
 gives
 {{{
 1 loops, best of 3: 954 ns per loop
 1 loops, best of 3: 9.56 ms per loop
 }}}

 This is because {{{.clear_cache}}} does
 {{{
         cdef object cache = self.cache
         for key in cache.keys():
             del cache[key]
 }}}
 which is very inefficient for large caches.

--
Ticket URL: <http://trac.sagemath.org/ticket/16792>
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/d/optout.

Reply via email to