       
       mbi:  4s (3.13 usr + 0.01 sys =  3.14 CPU) @  115038/s (n=361222)
       mbf:  3s (3.18 usr + 0.00 sys =  3.18 CPU) @   42600/s (n=135470)
       rat:  3s (3.13 usr + 0.00 sys =  3.13 CPU) @   41884/s (n=131100)
      lite:  4s (3.07 usr + 0.00 sys =  3.07 CPU) @  162686/s (n=499447)

      calc:  4s (3.02 usr + 0.02 sys =  3.02 CPU) @  148545/s (n=445637)

About 55% of the time of Math::BigInt->is_odd() is thus spent inside
Math::BigInt::Calc::_is_odd().

  xsfaster:  2s (3.16 usr + 0.01 sys =  3.17 CPU) @ 1282097/s (n=4064248)

1280/149 is about 8.6 times faster than Calc. Unfortunately, it is a simplistic
version that does not anything a Calc replacement needs to do. But it shows
what the theoretical limit will be, you cannot go faster than this. 

    xsfast:  3s (3.11 usr + 0.00 sys =  3.11 CPU) @  204192/s (n=635039)

This is about 40% faster than Calc. This means we can expect to reduce the
55% time spent inside Calc by 40%, which means roughly 15% savings all in all.

Not much, but better than nothing, eh? 

To be fair, on a slower 300 Mhz PIII (also with GCC 3.1) the benchmark
indicated that xsfast is about twice as fast as the Calc version, reducing the
time in total by roughly 27% all in all. YMWV (Your Milage Will Vary).

A full benchmark when FastCalc is done will show us what the real value will
be. But I expect it not to differ that much from the preliminary benchmarks,
since the XS version of _is_odd/_is_even is pretty much in it's final shape.



long (1):
Benchmark: running calc, calc2, mbf, mbi, rat, xsfast, xsfast2 for at least 3 CPU seconds...
      calc:  4s ( 3.10 usr +  0.00 sys =  3.10 CPU) @ 199020/s (n=616963)
     calc2:  3s ( 3.13 usr +  0.00 sys =  3.13 CPU) @ 165672/s (n=518556)
       mbf:  4s ( 3.18 usr +  0.00 sys =  3.18 CPU) @   9075/s (n=28861)
       mbi:  2s ( 3.18 usr +  0.00 sys =  3.18 CPU) @  37478/s (n=119181)
       rat:  3s ( 3.15 usr +  0.00 sys =  3.15 CPU) @   9162/s (n=28861)
    xsfast:  3s ( 2.97 usr +  0.14 sys =  3.11 CPU) @ 217803/s (n=677368)
   xsfast2:  3s ( 3.11 usr +  0.11 sys =  3.22 CPU) @ 191603/s (n=616963)
long (10):
Benchmark: running calc, calc2, mbf, mbi, rat, xsfast, xsfast2 for at least 3 CPU seconds...
      calc:  4s ( 3.13 usr +  0.00 sys =  3.13 CPU) @ 152761/s (n=478142)
     calc2:  4s ( 3.01 usr +  0.00 sys =  3.01 CPU) @  82613/s (n=248667)
       mbf:  4s ( 3.19 usr +  0.00 sys =  3.19 CPU) @   8558/s (n=27303)
       mbi:  2s ( 3.11 usr +  0.00 sys =  3.11 CPU) @  30108/s (n=93636)
       rat:  3s ( 3.17 usr +  0.00 sys =  3.17 CPU) @   8569/s (n=27164)
    xsfast:  3s ( 2.99 usr +  0.15 sys =  3.14 CPU) @ 185569/s (n=582689)
   xsfast2:  4s ( 3.02 usr +  0.15 sys =  3.17 CPU) @ 165430/s (n=524414)
long (100):
Benchmark: running calc, calc2, mbf, mbi, rat, xsfast, xsfast2 for at least 3 CPU seconds...
      calc:  2s ( 3.16 usr +  0.00 sys =  3.16 CPU) @ 45126/s (n=142600)
     calc2:  3s ( 3.11 usr +  0.00 sys =  3.11 CPU) @ 13610/s (n=42328)
       mbf:  3s ( 3.20 usr +  0.01 sys =  3.21 CPU) @  5495/s (n=17640)
       mbi:  3s ( 3.16 usr +  0.00 sys =  3.16 CPU) @ 10370/s (n=32770)
       rat:  3s ( 3.16 usr +  0.00 sys =  3.16 CPU) @  5579/s (n=17630)
    xsfast:  5s ( 2.58 usr +  0.45 sys =  3.03 CPU) @ 73900/s (n=223917)

