#!/usr/bin/perl use strict; use warnings; use Benchmark qw /cmpthese/; our ($a, $b, $c, $d); cmpthese -10 => { '==-num' => '$::a = 0; for my $i (0 .. 1000000) { $::a ++ if $i == 100; }', 'eq-num' => '$::b = 0; for my $i (0 .. 1000000) { $::b ++ if $i eq "100"; }', '==-str' => '$::c = 0; for my $i ("0" .. "1000000") { $::c ++ if $i == 100; }', 'eq-str' => '$::d = 0; for my $i (0 .. "1000000") { $::d ++ if $i eq "100"; }', }; print "[$a] [$b] [$c] [$d]\n"; __END__ Benchmark: running ==-num, ==-str, eq-num, eq-str, each for at least 10 CPU seconds... ==-num: 10 wallclock secs (10.02 usr + 0.00 sys = 10.02 CPU) @ 4.19/s (n=42) ==-str: 10 wallclock secs (10.25 usr + 0.01 sys = 10.26 CPU) @ 1.75/s (n=18) eq-num: 10 wallclock secs (10.06 usr + 0.01 sys = 10.07 CPU) @ 2.38/s (n=24) eq-str: 10 wallclock secs (10.28 usr + 0.00 sys = 10.28 CPU) @ 2.43/s (n=25) Rate ==-str eq-num eq-str ==-num ==-str 1.75/s -- -26% -28% -58% eq-num 2.38/s 36% -- -2% -43% eq-str 2.43/s 39% 2% -- -42% ==-num 4.19/s 139% 76% 72% -- [1] [1] [1] [1]