BTW, note that using bigint indiscriminately can have a
massive performance penalty. So be sure to always localize it to
exactly where you actually need it (by putting extra {...} blocks around those sections).
#!/usr/bin/perl
use strict;
use warnings;
use Benchmark qw(cmpthese);
{
use bigint;
# code that needs bigint
my $r = 0x234;
my $t = 0x345;
my $x1 = $r << 32 | $t;
#print $x1->as_hex;
# other stuff that doesn't...
# => unnecessarily slow!
sub with_bigint {
my $x = 1;
$x = $x * 4 / 2 - 1 for 1..1000;
}
} # end of bigint
sub no_bigint {
my $x = 1;
$x = $x * 4 / 2 - 1 for 1..1000;
}
cmpthese (-1,
{
with_bigint => \&with_bigint,
no_bigint => \&no_bigint,
},
);
__END__
Rate with_bigint no_bigint
with_bigint 11.3/s -- -100%
no_bigint 4073/s 35876% --
|