Bit-Twiddling
view release on metacpan or search on metacpan
examples/benchmarks.pl view on Meta::CPAN
int count;
for ( count = 0; n; count++ )
n &= n - 1;
return count;
}
EOC
*csb_c = *count_set_bits;
sub csb_perl_loop($n) {
my $count = 0;
while ($n) {
$count++ if $n & 1;
$n >>= 1;
}
return $count;
}
sub csb_perl_c($n) {
my $count = 0;
for ( ; $n; $count++ ) {
$n &= $n - 1;
}
return $count;
}
sub csb_perl_str($n) {
my $str = sprintf "%b", $n;
return $str =~ tr/1//d;
}
sub csb_perl_int($n) {
my $count = 0;
while ($n) {
$count++ if $n & 1;
$n >>= 1;
}
return $count;
}
dd csb_perl_str(10);
( run in 0.327 second using v1.01-cache-2.11-cpan-65fba6d93b7 )