in reply to Unbelievably slow..
my $ans = 0; my $total = 0; my $bit; for my $num (0 .. 16777215) { $bit = 1; $total += $_ ? $bit++ : -$bit++ for unpack("b24", pack "L", $num) =~ /./g; $ans++ unless $total; $total = 0; } print "$ans\n";
$ make t cc t.c -o t $ time ./t 187692 real 0m3.992s user 0m3.990s sys 0m0.000s $ time perl t.pl 187692 real 6m54.313s user 6m53.290s sys 0m0.510sStill, obviously, you're never going to get anywhere near the same ballpark as C with Perl code in things as machine-friendly as this.
Makeshifts last the longest.
|
---|