#9138: Categories for polynomial rings
--------------------------+-------------------------------------------------
   Reporter:  jbandlow    |       Owner:  nthiery                  
       Type:  defect      |      Status:  needs_info               
   Priority:  major       |   Milestone:  sage-4.7                 
  Component:  categories  |    Keywords:  introspection, categories
     Author:  Simon King  |    Upstream:  N/A                      
   Reviewer:              |      Merged:                           
Work_issues:              |  
--------------------------+-------------------------------------------------

Comment(by SimonKing):

 Idea: Could it be that the length of the method resolution order is
 responsible for the slow-down?

 With all patches:
 {{{
 sage: len(type(QQ['x']).mro())
 47
 sage: len(type(QQ['x','y']).mro())
 11
 sage: len(type(GF(3)['x','y']).mro())
 11
 sage: len(type(GF(3)['x']).mro())
 49
 sage: len(type(ZZ['x']).mro())
 41
 sage: len(type(ZZ['x']['t']).mro())
 41
 sage: len(type(QQ['x'].gen()).mro())
 9
 sage: len(type(QQ['x','y'].gen()).mro())
 8
 sage: len(type(GF(3)['x','y'].gen()).mro())
 8
 sage: len(type(GF(3)['x'].gen()).mro())
 10
 sage: len(type(ZZ['x'].gen()).mro())
 9
 sage: len(type(ZZ['x']['t'].gen()).mro())
 9
 }}}

 With only the patches from #9944:
 {{{
 sage: len(type(QQ['x']).mro())
 39
 sage: len(type(QQ['x','y']).mro())
 11
 sage: len(type(GF(3)['x','y']).mro())
 11
 sage: len(type(GF(3)['x']).mro())
 41
 sage: len(type(ZZ['x']).mro())
 34
 sage: len(type(ZZ['x']['t']).mro())
 34
 sage: len(type(QQ['x'].gen()).mro())
 9
 sage: len(type(QQ['x','y'].gen()).mro())
 8
 sage: len(type(GF(3)['x','y'].gen()).mro())
 8
 sage: len(type(GF(3)['x'].gen()).mro())
 10
 sage: len(type(ZZ['x'].gen()).mro())
 9
 sage: len(type(ZZ['x']['t'].gen()).mro())
 9
 }}}

 Without these patches:
 {{{
 sage: len(type(QQ['x']).mro())
 18
 sage: len(type(QQ['x','y']).mro())
 11
 sage: len(type(GF(3)['x','y']).mro())
 11
 sage: len(type(GF(3)['x']).mro())
 20
 sage: len(type(ZZ['x']).mro())
 15
 sage: len(type(ZZ['x']['t']).mro())
 15
 sage: len(type(QQ['x'].gen()).mro())
 9
 sage: len(type(QQ['x','y'].gen()).mro())
 8
 sage: len(type(GF(3)['x','y'].gen()).mro())
 8
 sage: len(type(GF(3)['x'].gen()).mro())
 10
 sage: len(type(ZZ['x'].gen()).mro())
 9
 sage: len(type(ZZ['x']['t'].gen()).mro())
 9
 }}}

 So, the mro of the rings becomes much longer. Could it be that, as a
 consequence, it takes longer to find common and frequently used methods
 such as `R.parent()` and `R.base_ring()`?

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/9138#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 post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sage-trac?hl=en.

Reply via email to