#!/usr/bin/perl -w use strict; use Benchmark 'cmpthese'; my @string = ( "foofoo catbar", "foofoofoo catbar", "foo foo cat bar", "foo flew over the", "cufoofoo nest", ); cmpthese(50_000, { foo_or => sub { /^(foob|)foofoo/ foreach (@string) }, foo_qs => sub { /^(foob)?foofoo/ foreach (@string) } }); #### Benchmark: timing 50000 iterations of foo_or, foo_qs... foo_or: 2 wallclock secs ( 1.28 usr + 0.00 sys = 1.28 CPU) @ 39062.50/s (n=50000) foo_qs: 2 wallclock secs ( 1.21 usr + 0.00 sys = 1.21 CPU) @ 41322.31/s (n=50000) Rate foo_or foo_qs foo_or 39062/s -- -5% foo_qs 41322/s 6% --