use strict; use warnings; use Benchmark qw( cmpthese ) ; use vars qw/$tuplets $template/; $tuplets = join '', ( 'aaa' .. 'caa' ); $template = join '', 'a3' x ( length( $tuplets ) / 3 ); print "Test string contains ", length( $tuplets ) / 3, " groups.\n\n"; cmpthese( -10, { regexp => sub { return $tuplets !~ /^(?:.{3})*(.{3})(?:.{3})*\1/; }, hash => sub { my %hash; @hash{ unpack $template, $tuplets } = (); return( length( $tuplets ) / 3 == keys( %hash ) ); } } ); #### Test string contains 1353 groups. s/iter regexp hash regexp 1.15 -- -98% hash 1.84e-002 6123% --