Hi Martin!

On 1 Dez., 20:30, Martin Albrecht <m...@informatik.uni-bremen.de>
wrote:
[...]
> Sure, but up to 50 seconds for a simple coercion seems way way too much even
> in that case.

Agreed. Let's try to find out what happens here.

My first thought was that it is due to the huge polynomial rings. But
the following seems to indicate that it is really a problem with
coercion and categories, after all:

sage: sage: IP = InfinitePolynomialRing(QQ)
sage: sage: x = IP.gen()
sage: sage: x10000 = x[10000]
sage: sage: %time 1/2*x10000
CPU times: user 0.00 s, sys: 0.00 s, total: 0.00 s
Wall time: 0.00 s
1/2*x10000
sage: sage: x10001 = x[10001]
sage: %prun 1/2*x10000
         11924289 function calls (11804267 primitive calls) in 46.270
CPU seconds

   Ordered by: internal time

   ncalls  tottime  percall  cumtime  percall filename:lineno
(function)
        1   19.536   19.536   46.270   46.270
infinite_polynomial_element.py:1190(_mul_)
        8   10.051    1.256   24.464    3.058 pushout.py:506(pushout)
    40004    3.854    0.000    3.854    0.000 {method 'intersection'
of 'set' objects}
   520078    2.978    0.000    4.041    0.000 {built-in method sub}
   240115    2.410    0.000    3.178    0.000 category.py:74(__init__)
80012/40008    1.147    0.000    7.033    0.000 pushout.py:193
(__mul__)
   520078    0.927    0.000    1.158    0.000 re.py:229(_compile)
   120028    0.717    0.000    4.295    0.000 pushout.py:144(__init__)
   520078    0.624    0.000    5.823    0.000 re.py:144(sub)
   520078    0.566    0.000    1.063    0.000 re.py:271(_subx)
   520078    0.317    0.000    0.497    0.000 re.py:251(_compile_repl)
  1040203    0.314    0.000    0.314    0.000 {method 'get' of 'dict'
objects}
  1240409    0.303    0.000    0.303    0.000 {isinstance}
    40008    0.273    0.000    0.395    0.000 pushout.py:49(__init__)
   160020    0.258    0.000    0.641    0.000 pushout.py:175(__cmp__)
...

So, most of the time is spent for "pushout.py" and "category.py". It
isn't explicitely used in InfinitePolynomialRing/Element, so, I guess
there is indeed some coercion problem.

Nevertheless, the regular expression business isn't good either. I'll
see what I can do -- recent sage-devel/sage-support threads indicated
some improvements.

Best regards,
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