#!perl use strict; use warnings; use Benchmark qw( cmpthese ); use English qw( -no_match_vars ); local $OUTPUT_RECORD_SEPARATOR = "\n"; print 'Perl version: ', $PERL_VERSION; my $s = 'Aid bears out ' x 10_000; print 'Length of string: ', length $s; cmpthese( -1, { 'lc' => sub { () = lc($s) =~ m{ [aeiou][aeiou] }xmsg }, '[Aa][Aa]' => sub { () = $s =~ m{ [AaEeIiOoUu][AaEeIiOoUu] }xmsg }, '[Aa]{2}' => sub { () = $s =~ m{ [AaEeIiOoUu]{2} }xmsg }, '/i' => sub { () = $s =~ m{ (?i) [aeiou]{2} }xmsg }, } ); __END__ #### Perl version: v5.12.0 Length of string: 140000 Rate [Aa]{2} lc [Aa][Aa] /i [Aa]{2} 50.7/s -- -0% -1% -3% lc 50.8/s 0% -- -1% -3% [Aa][Aa] 51.5/s 1% 1% -- -2% /i 52.5/s 4% 3% 2% --