
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.