Here are some examples of timings with different compilation options.
(I'm using 3*10^8) here because it takes long enough to see the
difference, but short enough to conveniently run lots of tests. 

After running hg_sage.pull() to get the newest version, of the code, I
get:

sage: time a = number_of_partitions(300000000, algorithm='bober')
CPU times: user 46.81 s, sys: 0.04 s, total: 46.85 s
Wall time: 47.19

Now I copy the code somewhere else and compile it, linking it to the
Ubuntu-installed libraries:

[EMAIL PROTECTED]:~/sage-2.7.1/sage-2.7.1/devel/sage-bober/sage/combinat$ cp 
partitions_c.cc ~/temp/
[EMAIL PROTECTED]:~/sage-2.7.1/sage-2.7.1/devel/sage-bober/sage/combinat$ cd 
~/temp
[EMAIL PROTECTED]:~/temp$ g++ partitions_c.cc -O3 -lgmp -lmpfr
[EMAIL PROTECTED]:~/temp$ ls -l a.out
-rwxr-xr-x 1 bober bober 27529 2007-07-30 20:01 a.out   <-- Look at size of 
file to make sure we aren't linking statically
[EMAIL PROTECTED]:~/temp$ time ./a.out 300000000
[...]
real    0m36.171s
user    0m36.110s
sys     0m0.016s

Now do the same thing, but link statically:

[EMAIL PROTECTED]:~/temp$ g++ partitions_c.cc -O3 -lmpfr -lgmp -static
[EMAIL PROTECTED]:~/temp$ ls -l a.out
-rwxr-xr-x 1 bober bober 1452497 2007-07-30 20:08 a.out    <-- Much bigger 
binary
[EMAIL PROTECTED]:~/temp$ time ./a.out 300000000
[...]
real    0m34.240s
user    0m34.146s
sys     0m0.020s

Now we build with the libraries included in sage. (Note that
sage does not build a shared library version of mprf, so
this binary is bigger than first we build.) The time this
takes to run is comparable to the time it took to run from
within sage, so we know the overhead isn't from sage.

[EMAIL PROTECTED]:~/temp$ g++ partitions_c.cc -O3 
-L/home/bober/sage-2.7.1/sage-2.7.1/local/lib 
-I/home/bober/sage-2.7.1/sage-2.7.1/local/lib -lmpfr -lgmp
[EMAIL PROTECTED]:~/temp$ ls -l a.out
-rwxr-xr-x 1 bober bober 150003 2007-07-30 20:14 a.out
[EMAIL PROTECTED]:~/temp$ time ./a.out 300000000
[...]
real    0m46.675s
user    0m46.515s
sys     0m0.116s

Now build a static version of the library. (It looks like sage
only builds a shared library version of gmp, so I'm not sure if
this really works the way it is supposed to, but it runs at a
similar speed.)

[EMAIL PROTECTED]:~/temp$ g++ partitions_c.cc -O3 
-L/home/bober/sage-2.7.1/sage-2.7.1/local/lib 
-I/home/bober/sage-2.7.1/sage-2.7.1/local/lib -lmpfr -lgmp -static
[EMAIL PROTECTED]:~/temp$ ls -l a.out
-rwxr-xr-x 1 bober bober 1479519 2007-07-30 20:19 a.out
[EMAIL PROTECTED]:~/temp$ time ./a.out 300000000
[...]
real    0m43.592s
user    0m43.443s
sys     0m0.012s

Now we build using the gmp 4.2.1 and mfpr 2.2.1 that I just built.

[EMAIL PROTECTED]:~/temp$ g++ partitions_c.cc -O3 -L/home/bober/local/lib/ 
-I/home/bober/local/include/ -lmpfr -lgmp
[EMAIL PROTECTED]:~/temp$ ls -l a.out
-rwxr-xr-x 1 bober bober 114849 2007-07-30 20:26 a.out
[EMAIL PROTECTED]:~/temp$ time ./a.out 300000000
[...]
real    0m35.630s
user    0m35.206s
sys     0m0.060s

And one more time, linking statically to those libraries

[EMAIL PROTECTED]:~/temp$ g++ partitions_c.cc -O3 -L/home/bober/local/lib/ 
-I/home/bober/local/include/ -lmpfr -lgmp -static
[EMAIL PROTECTED]:~/temp$ ls -l a.out
-rwxr-xr-x 1 bober bober 1401979 2007-07-30 20:29 a.out
[EMAIL PROTECTED]:~/temp$ time ./a.out 300000000
[...]
real    0m33.924s
user    0m33.354s
sys     0m0.052s



On Mon, 2007-07-30 at 17:32 -0400, Jonathan Bober wrote:
> Short answer: This has occurred to me, and I don't think that it is the
> problem.
> 
> I'll try to document this carefully and give a more detailed answer
> later.
> 
> On Mon, 2007-07-30 at 14:25 -0700, William Stein wrote:
> > On 7/30/07, David Harvey <[EMAIL PROTECTED]> wrote:
> > > Hi, I haven't been following closely, but I wonder if it's a static vs
> > > shared thing. But usually that shouldn't account for such a large
> > > difference, so that's probably not the issue.
> > 
> > Do you build and link in the dynamic version of GMP?  There
> > might be a speed difference between static and dynamic.
> > 
> > William
> > 
> > > 
> > 
> > 
> 
> 
> > 
> 
> 


--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~----------~----~----~----~------~----~------~--~---

Reply via email to