Boost logo

Boost :

Subject: Re: [boost] Looking for some "real world" extended precision integer arithmetic tests
From: John Maddock (boost.regex_at_[hidden])
Date: 2012-02-21 13:31:58


> John,
>
> Benchmark description follows (test code and results in the attachments):

Andrii,

I finally got around to running your benchmark myself and see rather
different results:

 boost::polygon::detail::extended_int<128>
Voronoi Benchmark Test (time in seconds):
| Number of points | Number of tests | Time per one test |
| 10 | 10000 | 0.000053 |
| 100 | 1000 | 0.000861 |
| 1000 | 100 | 0.009630 |
| 10000 | 10 | 0.104400 |
| 100000 | 1 | 1.064000 |

 mp_number<fixed_int<128, true> >
Voronoi Benchmark Test (time in seconds):
| Number of points | Number of tests | Time per one test |
| 10 | 10000 | 0.000062 |
| 100 | 1000 | 0.000874 |
| 1000 | 100 | 0.009530 |
| 10000 | 10 | 0.105400 |
| 100000 | 1 | 1.089000 |

 mp_number<fixed_int<256, true> >
Voronoi Benchmark Test (time in seconds):
| Number of points | Number of tests | Time per one test |
| 10 | 10000 | 0.000054 |
| 100 | 1000 | 0.000868 |
| 1000 | 100 | 0.009470 |
| 10000 | 10 | 0.105200 |
| 100000 | 1 | 1.075000 |

 mp_number<fixed_int<512, true> >
Voronoi Benchmark Test (time in seconds):
| Number of points | Number of tests | Time per one test |
| 10 | 10000 | 0.000056 |
| 100 | 1000 | 0.000865 |
| 1000 | 100 | 0.009500 |
| 10000 | 10 | 0.105500 |
| 100000 | 1 | 1.071000 |

 mp_number<fixed_int<1024, true> >
Voronoi Benchmark Test (time in seconds):
| Number of points | Number of tests | Time per one test |
| 10 | 10000 | 0.000069 |
| 100 | 1000 | 0.001027 |
| 1000 | 100 | 0.011230 |
| 10000 | 10 | 0.122700 |
| 100000 | 1 | 1.250000 |

 mp_number<cpp_int_backend<> >
Voronoi Benchmark Test (time in seconds):
| Number of points | Number of tests | Time per one test |
| 10 | 10000 | 0.000055 |
| 100 | 1000 | 0.000866 |
| 1000 | 100 | 0.009630 |
| 10000 | 10 | 0.107000 |
| 100000 | 1 | 1.077000 |

 mp_number<mpz_int >
Voronoi Benchmark Test (time in seconds):
| Number of points | Number of tests | Time per one test |
| 10 | 10000 | 0.000064 |
| 100 | 1000 | 0.001076 |
| 1000 | 100 | 0.013260 |
| 10000 | 10 | 0.139300 |
| 100000 | 1 | 1.375000 |

 mp_number<tommath_int>
Voronoi Benchmark Test (time in seconds):
| Number of points | Number of tests | Time per one test |
| 10 | 10000 | 0.000063 |
| 100 | 1000 | 0.000897 |
| 1000 | 100 | 0.009770 |
| 10000 | 10 | 0.108800 |
| 100000 | 1 | 1.097000 |

So basically the times are all about the same, except for very large
fixed_int's, or gmp - and even those aren't *much* worse. There's also an
experimental "cpp_int" in there which is an all C++ arbitrary precision type
that uses the "small value optimization" to avoid memory allocation when
possible.

This is with the latest gtl sandbox code BTW. Maybe you've changed
something to make the code much less dependent on the integer type? I
assume that the only code I need to change to test a new type is the line
that defines big_int_type in voronoi_user_traits?

BTW I tried to run the test on Linux as well, but I couldn't get your code
to compile there....

Cheers, John.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk