I have some indication that certain elliptic curve functions became
slower in recent Sage versions (comparing sage-4.7.1 to
sage-4.7.2.alpha3 for example). However, since disk speed and system
load might be factors, it would be nice if we could collect some data
points to see whether this is really the case.
I have prepared two small Sage scripts at:
http://boxen.math.washington.edu/home/jdemeyer/elltest1.sage
http://boxen.math.washington.edu/home/jdemeyer/elltest2.sage
For those who have installed sage-4.7.2.alpha3 and still have an older
version, please do
$ time ./sage elltest1.sage
$ time ./sage elltest2.sage
with both these versions.
Regarding the first test, I am pretty sure that nothing changed in the
elliptic curve code itself, this must be a side-effect of something
else with arithmetic mod p. But I vaguely remember that William did
something with the abelian_group code, so perhaps he can comment.
John
> --
> You received this message because you are subscribed to the Google Groups "sage-nt" group.
> To post to this group, send an email to sag...@googlegroups.com.
> To unsubscribe from this group, send email to sage-nt+u...@googlegroups.com.
> For more options, visit this group at http://groups.google.com/group/sage-nt?hl=en-GB.
>
>
elltest1.sage:
* sage-4.7.1 vanilla: 32s
* sage-4.7.2.alpha2 + new PARI + many patches: 27s
* sage-4.7.2.alpha3 + new Singular: 41s
elltest2.sage:
* sage-4.7.1 vanilla: 24s
* sage-4.7.2.alpha2 + new PARI + many patches: 22s
* sage-4.7.2.alpha3 + new Singular: 80s
So certainly something slowed down in sage-4.7.2.alpha3!
John
I am currently building sage-4.7.2.alpha2 and sage-4.7.2.alpha3 on
sage.math.washington.edu to compare these two versions. Once we have
these data, we should probably post to sage-devel with our findings.
elltest1.sage:
* sage-4.7.2.alpha2: 23s
* sage-4.7.2.alpha3: 35s
elltest2.sage:
* sage-4.7.2.alpha2: 17s
* sage-4.7.2.alpha3: 62s
I am mystified about this. The only use integral_points() makes of
matrices is that it does some LLL-reduction on real matrices.
In a loop there are the lines
M = matrix.MatrixSpace(Z,n)
m = copy(M.identity_matrix())
where Z is the Integer ring, and n is constant (not changing in
different passes through the loop). The entries of m are then set
individually before m.LLL() is called. there is probably a better way
of doing this! At present matrix.MatrixSpace(Z,n) will be called
several times with the same parameters, and that line should certainly
be moved outside the loop.
In any case the vast majority of the time taken in integral_points()
is in computing the gens which is done by an external call to mwrank
(about 70s). Then the integral point computation only takes a
fraction of a second, on my machine.
But there must be more to this regression than that!
John
No reason at all. My excuse is that this code was written by two
inexperienced masters students and I rewrote some but not all of it.
That line should be moved out of the loop right away.
John
>
> My patch at #11900 fixes most of the elliptic curve speed regressions
> caused by my patches from #9138. I have not tested that particular
> example yet, but I hope that I'll be able to fix the remaining
> regression as well.
>
> Cheers,
> Simon
>
for E in cremona_curves([11..100]):
S = E.integral_points(both_signs=False)
John