fork download
  1.  
  2. use 5.14.1;
  3. use strict;
  4. use warnings;
  5.  
  6. use Benchmark qw/:all/;
  7.  
  8. my @strings;
  9. my @chars = ("A".."Z", "a".."z", " ");
  10.  
  11. for ( 1..10000 ) {
  12. my $string;
  13. $string .= $chars[rand @chars] for 1..20;
  14. push(@strings, $string);
  15. }
  16.  
  17. sub oneregexp {
  18. for my $string ( @strings ) {
  19. $string =~ s/(^\s+|\s+$)//g
  20. }
  21. }
  22.  
  23. sub tworegexp {
  24. for my $string ( @strings ) {
  25. $string =~ s/^\s+//;
  26. $string =~ s/\s+$//;
  27. }
  28. }
  29.  
  30.  
  31. cmpthese (230,
  32. {
  33. 'oneregexp' => '&oneregexp',
  34. 'tworegexp' => '&tworegexp',
  35. });
  36.  
Success #stdin #stdout 14.06s 4960KB
stdin
Standard input is empty
stdout
            Rate oneregexp tworegexp
oneregexp 18.1/s        --      -90%
tworegexp  185/s      923%        --