That's very interesting. It clearly shows that the further from
"balanced" that the division is, the worse our (ancient) code
performs.

I'm certainly looking forward to sorting out our division code.

Bill.

2010/1/10 Case Vanhorsen <cas...@gmail.com>:
> I'll toss in my benchmark results. :-)
>
>                            GMPY performance benchmark
>
> Decimal string to mpz:      MPIR 1.3.0           GMP 5.0.0
>        10 digits:      0.00000021 sec      0.00000022 sec
>       100 digits:      0.00000063 sec      0.00000066 sec
>       500 digits:      0.00000318 sec      0.00000302 sec
>      1000 digits:      0.00000716 sec      0.00000693 sec
>      5000 digits:      0.00008661 sec      0.00006298 sec
>     10000 digits:      0.00026616 sec      0.00016775 sec
>     50000 digits:      0.00265514 sec      0.00168555 sec
>    100000 digits:      0.00651324 sec      0.00444604 sec
>    500000 digits:      0.04866513 sec      0.03830050 sec
>   1000000 digits:      0.11429363 sec      0.09162606 sec
>  10000000 digits:      2.31600404 sec      1.59257817 sec
>
> Mpz to decimal string:      MPIR 1.3.0           GMP 5.0.0
>        10 digits:      0.00000034 sec      0.00000035 sec
>       100 digits:      0.00000105 sec      0.00000101 sec
>       500 digits:      0.00000717 sec      0.00000589 sec
>      1000 digits:      0.00001586 sec      0.00001262 sec
>      5000 digits:      0.00014800 sec      0.00010783 sec
>     10000 digits:      0.00041150 sec      0.00029588 sec
>     50000 digits:      0.00420932 sec      0.00338085 sec
>    100000 digits:      0.01185473 sec      0.00920948 sec
>    500000 digits:      0.12125288 sec      0.08355007 sec
>   1000000 digits:      0.31727976 sec      0.20738387 sec
>  10000000 digits:      7.70821309 sec      3.94376493 sec
>
> Mpz addition:               MPIR 1.3.0           GMP 5.0.0
>        10 digits:      0.00000010 sec      0.00000009 sec
>       100 digits:      0.00000010 sec      0.00000010 sec
>       500 digits:      0.00000012 sec      0.00000011 sec
>      1000 digits:      0.00000014 sec      0.00000013 sec
>      5000 digits:      0.00000051 sec      0.00000050 sec
>     10000 digits:      0.00000073 sec      0.00000073 sec
>     50000 digits:      0.00000430 sec      0.00000429 sec
>    100000 digits:      0.00000822 sec      0.00000818 sec
>    500000 digits:      0.00003971 sec      0.00003959 sec
>   1000000 digits:      0.00007838 sec      0.00007884 sec
>  10000000 digits:      0.00357354 sec      0.00354370 sec
> 100000000 digits:      0.05413541 sec      0.05324940 sec
>
> 1NxN mpz multiplication:    MPIR 1.3.0           GMP 5.0.0
>        10 digits:      0.00000009 sec      0.00000009 sec
>       100 digits:      0.00000017 sec      0.00000018 sec
>       500 digits:      0.00000124 sec      0.00000126 sec
>      1000 digits:      0.00000414 sec      0.00000378 sec
>      5000 digits:      0.00004730 sec      0.00004805 sec
>     10000 digits:      0.00012850 sec      0.00012088 sec
>     50000 digits:      0.00123085 sec      0.00109137 sec
>    100000 digits:      0.00290135 sec      0.00280582 sec
>    500000 digits:      0.01663006 sec      0.01763764 sec
>   1000000 digits:      0.03379822 sec      0.03994881 sec
>  10000000 digits:      0.68572044 sec      0.61115754 sec
> 100000000 digits:      6.44622898 sec      7.93841791 sec
>
> 5NxN mpz multiplication:    MPIR 1.3.0           GMP 5.0.0
>        10 digits:      0.00000011 sec      0.00000010 sec
>       100 digits:      0.00000038 sec      0.00000040 sec
>       500 digits:      0.00000604 sec      0.00000652 sec
>      1000 digits:      0.00002064 sec      0.00001863 sec
>      5000 digits:      0.00023417 sec      0.00021708 sec
>     10000 digits:      0.00064239 sec      0.00058681 sec
>     50000 digits:      0.00608666 sec      0.00436574 sec
>    100000 digits:      0.00847080 sec      0.00917852 sec
>    500000 digits:      0.05356821 sec      0.06811212 sec
>   1000000 digits:      0.12863311 sec      0.14648414 sec
>  10000000 digits:      2.27829909 sec      2.17810798 sec
> 100000000 digits:     21.30186605 sec     27.38823199 sec
>
> 17NxN mpz multiplication:   MPIR 1.3.0           GMP 5.0.0
>        10 digits:      0.00000010 sec      0.00000011 sec
>       100 digits:      0.00000113 sec      0.00000108 sec
>       500 digits:      0.00002057 sec      0.00002183 sec
>      1000 digits:      0.00007094 sec      0.00006423 sec
>      5000 digits:      0.00081254 sec      0.00071725 sec
>     10000 digits:      0.00217992 sec      0.00197989 sec
>     50000 digits:      0.02072028 sec      0.01620061 sec
>    100000 digits:      0.02676870 sec      0.03553003 sec
>    500000 digits:      0.20828125 sec      0.23191699 sec
>   1000000 digits:      0.42618978 sec      0.52746260 sec
>  10000000 digits:      5.84609008 sec      7.77125812 sec
> 100000000 digits:     74.05822110 sec    100.53587508 sec
>
> 2N/N mpz quotient:          MPIR 1.3.0           GMP 5.0.0
>        10 digits:      0.00000018 sec      0.00000018 sec
>       100 digits:      0.00000041 sec      0.00000037 sec
>       500 digits:      0.00000234 sec      0.00000203 sec
>      1000 digits:      0.00000729 sec      0.00000638 sec
>      5000 digits:      0.00009662 sec      0.00009747 sec
>     10000 digits:      0.00029030 sec      0.00029359 sec
>     50000 digits:      0.00329851 sec      0.00279975 sec
>    100000 digits:      0.00912671 sec      0.00663861 sec
>    500000 digits:      0.07756643 sec      0.04376046 sec
>   1000000 digits:      0.18805614 sec      0.10166769 sec
>  10000000 digits:      3.46835899 sec      1.65955496 sec
> 100000000 digits:     57.28032804 sec     21.36209702 sec
>
> 5N/N mpz quotient:          MPIR 1.3.0           GMP 5.0.0
>        10 digits:      0.00000021 sec      0.00000020 sec
>       100 digits:      0.00000095 sec      0.00000085 sec
>       500 digits:      0.00000846 sec      0.00000747 sec
>      1000 digits:      0.00002843 sec      0.00002508 sec
>      5000 digits:      0.00038293 sec      0.00038840 sec
>     10000 digits:      0.00115942 sec      0.00117106 sec
>     50000 digits:      0.01321486 sec      0.00858406 sec
>    100000 digits:      0.03642362 sec      0.02081330 sec
>    500000 digits:      0.31158978 sec      0.13223937 sec
>   1000000 digits:      0.75152898 sec      0.30322999 sec
>  10000000 digits:     13.88208699 sec      4.75602698 sec
> 100000000 digits:    228.71033311 sec     60.81353498 sec
>
> 17N/N mpz quotient:         MPIR 1.3.0           GMP 5.0.0
>        10 digits:      0.00000028 sec      0.00000026 sec
>       100 digits:      0.00000343 sec      0.00000287 sec
>       500 digits:      0.00003360 sec      0.00002929 sec
>      1000 digits:      0.00011155 sec      0.00010037 sec
>      5000 digits:      0.00153300 sec      0.00132398 sec
>     10000 digits:      0.00462759 sec      0.00346040 sec
>     50000 digits:      0.05275750 sec      0.02910585 sec
>    100000 digits:      0.14589587 sec      0.07089074 sec
>    500000 digits:      1.24625611 sec      0.44447249 sec
>   1000000 digits:      2.99730897 sec      1.01921391 sec
>  10000000 digits:     55.43707895 sec     15.77324915 sec
> 100000000 digits:    915.73236585 sec    200.43964195 sec
>
> 2N/N mpz quot & rem:        MPIR 1.3.0           GMP 5.0.0
>        10 digits:      0.00000026 sec      0.00000025 sec
>       100 digits:      0.00000049 sec      0.00000045 sec
>       500 digits:      0.00000242 sec      0.00000207 sec
>      1000 digits:      0.00000738 sec      0.00000648 sec
>      5000 digits:      0.00009728 sec      0.00009805 sec
>     10000 digits:      0.00029146 sec      0.00029408 sec
>     50000 digits:      0.00330097 sec      0.00279113 sec
>    100000 digits:      0.00913051 sec      0.00663646 sec
>    500000 digits:      0.07772918 sec      0.04375675 sec
>   1000000 digits:      0.18767852 sec      0.10160725 sec
>  10000000 digits:      3.47579503 sec      1.65892482 sec
> 100000000 digits:     57.20885682 sec     21.33134699 sec
>
> Mpz squaring:               MPIR 1.3.0           GMP 5.0.0
>        10 digits:      0.00000015 sec      0.00000013 sec
>       100 digits:      0.00000025 sec      0.00000019 sec
>       500 digits:      0.00000102 sec      0.00000090 sec
>      1000 digits:      0.00000288 sec      0.00000267 sec
>      5000 digits:      0.00003559 sec      0.00003249 sec
>     10000 digits:      0.00009700 sec      0.00008516 sec
>     50000 digits:      0.00088845 sec      0.00078422 sec
>    100000 digits:      0.00201402 sec      0.00190495 sec
>    500000 digits:      0.01089044 sec      0.01193870 sec
>   1000000 digits:      0.02389035 sec      0.02675930 sec
>  10000000 digits:      0.49165547 sec      0.42553878 sec
> 100000000 digits:      4.66965413 sec      5.35446501 sec
>
> Mpz square root & rem:      MPIR 1.3.0           GMP 5.0.0
>        10 digits:      0.00000030 sec      0.00000026 sec
>       100 digits:      0.00000058 sec      0.00000051 sec
>       500 digits:      0.00000167 sec      0.00000139 sec
>      1000 digits:      0.00000316 sec      0.00000244 sec
>      5000 digits:      0.00002410 sec      0.00002248 sec
>     10000 digits:      0.00007203 sec      0.00006785 sec
>     50000 digits:      0.00083096 sec      0.00080454 sec
>    100000 digits:      0.00236414 sec      0.00226395 sec
>    500000 digits:      0.02368536 sec      0.01876901 sec
>   1000000 digits:      0.06033419 sec      0.04411175 sec
>  10000000 digits:      1.18814492 sec      0.72805297 sec
> 100000000 digits:     21.50279713 sec     10.78387809 sec
>
> Mpz cube root:              MPIR 1.3.0           GMP 5.0.0
>        10 digits:      0.00000107 sec      0.00000127 sec
>       100 digits:      0.00000274 sec      0.00000230 sec
>       500 digits:      0.00000606 sec      0.00000347 sec
>      1000 digits:      0.00001043 sec      0.00000497 sec
>      5000 digits:      0.00007458 sec      0.00002220 sec
>     10000 digits:      0.00021136 sec      0.00005912 sec
>     50000 digits:      0.00224647 sec      0.00065954 sec
>    100000 digits:      0.00607530 sec      0.00181209 sec
>    500000 digits:      0.04742103 sec      0.01574672 sec
>   1000000 digits:      0.10733093 sec      0.03698403 sec
>  10000000 digits:      1.85199785 sec      0.60995245 sec
> 100000000 digits:     27.63473392 sec      9.01733184 sec
>
> Mpz next_prime
> 10000000th prime:     69.74       sec    183.40       sec
>
> This is from a Python program I hacked together last night. The unit
> of measurement is decimal digits. I'll upload the program after I make
> a few changes: sizes in bits, more tests, and parser friendly output.
>
> casevh
>
> --
> You received this message because you are subscribed to the Google Groups 
> "mpir-devel" group.
> To post to this group, send email to mpir-de...@googlegroups.com.
> To unsubscribe from this group, send email to 
> mpir-devel+unsubscr...@googlegroups.com.
> For more options, visit this group at 
> http://groups.google.com/group/mpir-devel?hl=en.
>
>
>
>
-- 
You received this message because you are subscribed to the Google Groups 
"mpir-devel" group.
To post to this group, send email to mpir-de...@googlegroups.com.
To unsubscribe from this group, send email to 
mpir-devel+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/mpir-devel?hl=en.


Reply via email to