my $s1 = '10110101001010100011101101001010'; my $s2 = '10110101001010100011101101001011'; my $b1 = pack('b*', $s1); my $b2 = pack('b*', $s2); use Benchmark qw(timethese); timethese( 10000, { 'strings' => \&comp_strings, 'packs' => \&comp_packs, } ); sub comp_strings { for (1..1000) { $s1 eq $s1 and $s1 eq $s2 } } sub comp_packs { for (1..1000) { $b1 eq $b1 and $b1 eq $b2 } } __END__ Benchmark: timing 10000 iterations of packs, strings... packs: 4 wallclock secs ( 4.07 usr + 0.00 sys = 4.07 CPU) @ 2460.02/s (n=10000) strings: 5 wallclock secs ( 4.71 usr + 0.00 sys = 4.71 CPU) @ 2124.50/s (n=10000)