On Sun, Jan 10, 2010 at 1:18 PM, Bill Hart <goodwillh...@googlemail.com> wrote:
> You are of course welcome to choose whichever package best meets your
> needs. And indeed on your particular system, it seems GMP may well do
> that for you at present.
>
> One thing you should bear in mind however. Here are some times as they
> have changed over the past year and a half:
>
> K8
>
> Multiplication:   GMP 4.3.0 MPIR 1.2.0  MPIR 1.1.2  MPIR 1.0.0  MPIR
> 0.9.0   GMP 4.2.1
> ==========         ========  =========   =========    ========
> ========   =========
> 128 x 128 :        52766506   53794646    51802252    35856598
> 37299412    25896136
> 512 x 512 :        10879150   12488043    11802334    10928085
> 8122452     6383542
> 8192 x 8192 :        114927     117404      111772      111641
> 86301       60819
> 131072 x 131072 :      1757       2062        1873        1650
> 1165         885
> 2097152 x 2097152 :    52.5       63.4        44.1        44.1
> 36.8        30.1
>
> So as you can see, the times have changed *MUCH* more for *both*
> projects than the current difference between them. In fact
> multiplication speed (the most important speed by far) has nearly
> doubled in the past year, right across the board. I think with GMP 5
> and MPIR 1.3 it really has doubled.
>
> So it is the improvement *over time* which is the important thing.
> You'll also note that the projects have leapfrogged each other, MPIR
> 0.9.0 beating GMP 4.2.1, GMP 4.3.0 beating MPIR 1.1.2, MPIR 1.2.0
> beating GMP 4.3.0 and so on. So it does depend at what time you do the
> comparison whether one or the other is better.
>
> Also, if you look at the times Case provided, what you said about only
> multiplication above 100000 bits being faster is not really true.
> There are other places where MPIR beats GMP, even on that system. Also
> Case's benchmark only tests certain functionality. The full benchmark
> that we were running earlier shows plenty of other improvements of
> MPIR over GMP and is intended to give a much better overall guide.
> Case is showing us benchmarks that he is personally very interested
> in, and so that will be important for us to look at improving.

I selected some of the tests specifically because they were improved
in GMP (especially diviision) or MPIR (next_prime). It is not a
general purpose benchmark. It was intended to highlight differences.

BTW, the platform is a 64-bit Core2 running Linux. I'm guessing the
results would be radically different on 64-bit Windows.

casevh
>
> Some of the program benchmarks that we have in our full benchmark
> suite tell a completely different story, putting MPIR well ahead for
> those sorts of things. They show that in an overall program, we do
> quite well.
>
> As I said, it is a mixed bag. Neither is showing clear superiority at
> this point. However, I will accept that on your 32 bit system, the
> assembly code is better optimised in GMP. That is definitely something
> we should look at improving further.
>
> Of course that is not completely trivial to do though. You are welcome
> to give it a go. I believe you will very quickly find that just about
> everything you try will make it slower. The assembly optimisation has
> got to such an art these days it cannot be done by hand. We have
> special optimisation tools for doing it, and it takes large amounts of
> CPU time, and human hours, to do the optimisation work. Progressively,
> over time, all the code will get optimised, but it is a long process!
>
> Bill.
>
> 2010/1/10 Gianrico Fini <gianrico.f...@gmail.com>:
>> It seems that also on your platform (32 bits you too?) MPIR is faster
>> only for one thing: multiplication (or squaring) above 100000 digits,
>> up to 30%.
>> And slower almost everywhere... somewhere +100% or more...
>>
>> This strengthen my decision...
>>
>> Gian.
>>
>> On 10 Gen, 18:47, Case Vanhorsen <cas...@gmail.com> wrote:
>>> 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
>>>   ...
>>>
>>> leggi tutto
>>
>> --
>> 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.
>
>
>
>
-- 
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