$ perl -e 'use Benchmark(cmpthese); cmpthese(1000000, { "a" => sub { $_ = "this that this those this these."; $a = () = /this/g; }, "b" => sub { $_ = "this that this those this these."; $a++ while(s/this//); }, "c" => sub { $_ = "this that this those this these."; $a = s/this/this/g; } });' Rate a b c a 282406/s -- -28% -28% b 390778/s 38% -- -1% c 393391/s 39% 1% --