I suspect some of the changes to matrix construction recently merged might need some fine tuning.
With the code on https://trac.sagemath.org/ticket/15113 I ran the following example: load("picard_group.sage") n=4 k.<a>=GF(41) R.<x,y,z>=k[] F=x^3*y+x^3*z+x^2*y^2+x^2*y*z+x^2*z^2+x*y^2*z+x*y*z^2+y^3*z+y*z^3 I=plane_curve(F) Z=I.zeros(n)[1] L=[I.point(l,n) for l in [ 0, 1, 0 ],[ 0, 0, 1 ],[ -1, 0, 1 ],[ 1, 0, 0 ],[ -1, 1, 0 ]] G=[l+L[0]-(L[0]+L[0]) for l in L[1:]] [42*g == Z for g in G] %prun _=10^30*G[1] (not on the same machine, so getting a real idea of the impact would need some further benchmarking) sage 8.2 on a Intel(R) Xeon(R) CPU E5-2660 0 @ 2.20GHz 552 0.134 0.000 0.165 0.000 {method 'right_kernel_matrix' of 'sage.matrix.matrix_modn_dense_float.Matrix_modn_dense_template' objects} 1071 0.106 0.000 0.126 0.000 {method 'echelonize' of 'sage.matrix.matrix_modn_dense_float.Matrix_modn_dense_template' objects} 1212 0.097 0.000 0.213 0.000 <string>:74(mumat) 6760 0.036 0.000 0.065 0.000 matrix_space.py:438(__classcall__) 6396 0.032 0.000 0.036 0.000 {method '__copy__' of 'sage.matrix.matrix_modn_dense_float.Matrix_modn_dense_template' objects} 7608 0.024 0.000 0.073 0.000 matrix_space.py:1681(matrix) 276 0.018 0.000 0.425 0.002 <string>:97(mu_preimage) 6760 0.017 0.000 0.024 0.000 matrix_space.py:108(get_matrix_class) 25943 0.015 0.000 0.015 0.000 {isinstance} 4350 0.015 0.000 0.015 0.000 {resource.getrusage} 4350 0.014 0.000 0.034 0.000 misc.py:199(cputime) 1071 0.013 0.000 0.030 0.000 {method 'row' of 'sage.matrix.matrix1.Matrix' objects} 135 0.013 0.000 0.191 0.001 <string>:82(mu_space_product) 1212 0.013 0.000 0.029 0.000 {method '_matrices_from_rows' of 'sage.matrix.matrix_modn_dense_float.Matrix_modn_dense_template' objects} 1071 0.012 0.000 0.029 0.000 {method 'submatrix' of 'sage.matrix.matrix_modn_dense_float.Matrix_modn_dense_template' objects} sage 8.3b0 on a Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz 7608 0.110 0.000 0.118 0.000 matrix_space.py:771(__call__) 552 0.102 0.000 0.161 0.000 {method 'right_kernel_matrix' of 'sage.matrix.matrix_modn_dense_float.Matrix_modn_dense_template' objects} 2402 0.099 0.000 0.252 0.000 matrix_space.py:473(__init__) 1071 0.080 0.000 0.094 0.000 {method 'echelonize' of 'sage.matrix.matrix_modn_dense_float.Matrix_modn_dense_template' objects} 1212 0.051 0.000 0.212 0.000 <string>:74(mumat) 142738 0.044 0.000 0.044 0.000 {isinstance} 7880 0.041 0.000 0.333 0.000 matrix_space.py:437(__classcall__) 276 0.030 0.000 0.635 0.002 <string>:97(mu_preimage) 2402 0.024 0.000 0.024 0.000 {hasattr} 112894 0.023 0.000 0.053 0.000 category.py:749(<genexpr>) 7880 0.018 0.000 0.025 0.000 matrix_space.py:107(get_matrix_class) 2402 0.013 0.000 0.046 0.000 modules.py:112(__classcall_private__) 560 0.011 0.000 0.047 0.000 matrix_space.py:936(_get_action_) 4350 0.011 0.000 0.023 0.000 misc.py:199(cputime) 135 0.010 0.000 0.172 0.001 <string>:82(mu_space_product) 1071 0.010 0.000 0.023 0.000 {method 'row' of 'sage.matrix.matrix1.Matrix' objects} 1212 0.010 0.000 0.103 0.000 {method '_matrices_from_rows' of 'sage.matrix.matrix_modn_dense_float.Matrix_modn_dense_template' objects} 2402 0.010 0.000 0.062 0.000 {any} 4350 0.009 0.000 0.009 0.000 {resource.getrusage} 1071 0.008 0.000 0.078 0.000 {method 'submatrix' of 'sage.matrix.matrix_modn_dense_float.Matrix_modn_dense_template' objects} 2402 0.008 0.000 0.019 0.000 fields.py:62(__contains__) As you can see, the __call__ in matrix_space has gone from a minor contributor to being the dominant cost, overtaking "echelonize" by a significant margin (one would expect "echelonize" to take the most time in these computations). I think a careful analysis of the regression in "matrix_space" and hopefully a signifcant improvement is warranted. I know that previously great care was taken to *defer* expensive parent initialization on matrices exactly because there are common scenarios where a lot of matrices are constructed without them having to interact with parents all that much. That was a very useful optimization, and I would hope we can reestablish the capability to do efficient matrix algebra (on lots of smallish matrices). -- You received this message because you are subscribed to the Google Groups "sage-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+unsubscr...@googlegroups.com. To post to this group, send email to sage-devel@googlegroups.com. Visit this group at https://groups.google.com/group/sage-devel. For more options, visit https://groups.google.com/d/optout.