in reply to The cost of unchecked best practices

This is not (as much) the case on 5.10:

Q:\>perl -w tmp.pl Rate class_nodot literal class class_nodot 459753/s -- -11% -12% literal 518377/s 13% -- -1% class 523687/s 14% 1% -- Q:\>perl -v This is perl, v5.10.0 built for MSWin32-x86-multi-thread Copyright 1987-2007, Larry Wall Perl may be copied only under the terms of either the Artistic License + or the GNU General Public License, which may be found in the Perl 5 source ki +t. Complete documentation for Perl, including FAQ lists, should be found +on this system using "man perl" or "perldoc perl". If you have access to + the Internet, point your browser at http://www.perl.org/, the Perl Home Pa +ge.

And at least when considering the readability, I prefer the method of writing the class instead of backslashing stuff, myself.

Replies are listed 'Best First'.
Re^2: The cost of unchecked best practices
by moritz (Cardinal) on Mar 19, 2008 at 12:07 UTC
    Thank you, good to know that the regex engine has been improved so much for 5.10.

    It's intresting that both yours and ikegami's benchmark show the 'class' example to be slightly faster than the 'literal' one.

    Any ideas why? Could somebody repeat the benchmark with more iterations please, to check if it's really faster (and not just randomness)? I have no 5.10 available here, sorry.

      For perl5.10

      perl -Mre=debug -e "qr/a .{1,10} \ /x;qr/a .{1,10} [ ]/x;"

      gives

      Compiling REx "a .{1,10} \ " Final program: 1: EXACT <a> (3) 3: CURLY {1,10} (6) 5: REG_ANY (0) 6: EXACT < > (8) 8: END (0) anchored "a" at 0 floating " " at 2..11 (checking floating) minlen 3 Compiling REx "a .{1,10} [ ]" Final program: 1: EXACT <a> (3) 3: CURLY {1,10} (6) 5: REG_ANY (0) 6: EXACT < > (8) 8: END (0)

      So the two compile to the identical program under 5.10. And indeed, when I take out class_nodot, I get:

      Rate literal class literal 531978/s -- -1% class 539600/s 1% --
      1% difference is meaningless. Many factors influence a few % in benchmarks. Seeing fluctuations of 5% is not unusual when running the same benchmark repeatedly.