Hi!

I'm analyzing the computation using prun, and get with some recent
unpatched beta version:

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
   185681    7.071    0.000   34.658    0.000 ell_generic.py:491(__call__)
   572926    6.390    0.000   23.003    0.000 ell_point.py:240(__init__)
   387096    4.836    0.000   13.760    0.000 ell_point.py:639(_add_)
        1    3.649    3.649   56.310   56.310 
ell_rational_field.py:6341(integral_points_with_bounded_mw_coeffs)
   185646    3.264    0.000    3.991    0.000 
ell_rational_field.py:6386(is_approx_integral)
   387120    3.141    0.000   10.223    0.000 scheme.py:336(point)
   185980    2.903    0.000    2.963    0.000 sequence.py:463(__init__)
   185980    2.759    0.000    6.824    0.000 sequence.py:86(Sequence)
   572916    2.573    0.000    3.531    0.000 morphism.py:131(__init__)
  3976022    2.460    0.000    2.460    0.000 {isinstance}
   572931    2.322    0.000    2.843    0.000 morphism.py:85(is_SchemeMorphism)
   185806    1.907    0.000   19.873    0.000 homset.py:251(__call__)
   185806    1.066    0.000   17.964    0.000 
homset.py:815(_element_constructor_)
   ...

With a very old Sage version (4.6.2), I get

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
   185681    6.662    0.000   18.996    0.000 ell_generic.py:500(__call__)
   387096    4.473    0.000    9.156    0.000 ell_point.py:639(_add_)
        1    3.385    3.385   35.594   35.594 
ell_rational_field.py:6254(integral_points_with_bounded_mw_coeffs)
   185646    3.220    0.000    3.797    0.000 
ell_rational_field.py:6299(is_approx_integral)
   185841    2.801    0.000    2.924    0.000 sequence.py:246(__init__)
   572926    2.794    0.000    8.873    0.000 ell_point.py:240(__init__)
   774298    1.096    0.000    1.436    0.000 ell_point.py:547(__nonzero__)
   185806    1.051    0.000    1.216    0.000 morphism.py:29(is_SchemeMorphism)
743248/185920    0.908    0.000    1.556    0.000 {hash}
   387120    0.857    0.000    2.364    0.000 scheme.py:255(point)
   185806    0.790    0.000    8.320    0.000 homset.py:184(__call__)
  1951244    0.740    0.000    0.740    0.000 ell_point.py:335(__getitem__)
781461/781440    0.560    0.000    2.081    0.000 {method 'is_zero' of 
'sage.structure.element.Element' objects}
   572926    0.548    0.000    0.553    0.000 scheme.py:224(point_homset)
   185757    0.494    0.000    2.086    0.000 homset.py:304(__hash__)
  1128549    0.457    0.000    0.457    0.000 {isinstance}
   201432    0.423    0.000    0.619    0.000 ell_point.py:480(codomain)
   185796    0.408    0.000    0.749    0.000 homset.py:135(value_ring)
   573220    0.385    0.000    0.385    0.000 homset.py:486(codomain)
   185761    0.361    0.000    0.361    0.000 {method 'round' of 
'sage.rings.real_mpfr.RealNumber' objects}
   185757    0.343    0.000    0.682    0.000 ell_generic.py:204(__hash__)

In other words: I can confirm the slow down, and it seems that time
is wasted in calling homsets. That could be related with category
stuff, but I'm not sure.

Anyway, I'd say one has to look at how the new _element_constructor_
method of homsets is different from the old __call__ method.

Did you have created a ticket already?

Cheers,
Simon

-- 
To post to this group, send an email to sage-devel@googlegroups.com
To unsubscribe from this group, send an email to 
sage-devel+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URL: http://www.sagemath.org

Reply via email to