ocehb: (Default)
ocehb ([personal profile] ocehb) wrote2016-05-18 10:43 am
Entry tags:

Правильный выбор регулярок



# perl -MBenchmark=cmpthese -le 'print "Perl $^V"; $a = "AAA"; cmpthese($ARGV[0], {
  ''A+'' => sub { $a =~ s#^\s+##; $a =~ s#\s+$##; $a =~ s#A#B#g; $a =~ s#B#A#g; $a },
  ''A*'' => sub { $a =~ s#^\s*##; $a =~ s#\s*$##; $a =~ s#A#B#g; $a =~ s#B#A#g; $a },
  ''B+'' => sub { return $a =~ s#^\s+##r =~ s#\s+$##r =~ s#A#B#gr =~ s#B#A#gr },
  ''B*'' => sub { return $a =~ s#^\s*##r =~ s#\s*$##r =~ s#A#B#gr =~ s#B#A#gr } })' 10000000 
Perl v5.22.1
       Rate   A*   B*   A+   B+
A* 424448/s   -- -15% -36% -47%
B* 501253/s  18%   -- -25% -37%
A+ 666223/s  57%  33%   -- -16%
B+ 794913/s  87%  59%  19%   --