It's been a while and thought to compare between Perl 5.8.9 - 5.26.0. Also cperl 5.24.2. First, I modified mat_look to safegaurd from auto-vivification. Thanks, roboticus. Results were obtains from a Mac laptop running at 2.6 GHz (i7 Haswell).
Results from Perl 5.8.9 - 5.26.0.
$ /opt/perl-5.8.9/bin/perl test.pl
Benchmark: timing 200000 iterations of Big, Lan, Mat, Pak, St2, St3, S
+tr...
Big: 6 wallclock secs ( 6.05 usr + 0.00 sys = 6.05 CPU) @ 33057.85/s
+(n=200000)
Lan: 5 wallclock secs ( 4.84 usr + 0.00 sys = 4.84 CPU) @ 41322.31/s
+(n=200000)
Mat: 7 wallclock secs ( 7.05 usr + 0.00 sys = 7.05 CPU) @ 28368.79/s
+(n=200000)
Pak: 6 wallclock secs ( 5.67 usr + 0.00 sys = 5.67 CPU) @ 35273.37/s
+(n=200000)
St2: 5 wallclock secs ( 4.47 usr + 0.00 sys = 4.47 CPU) @ 44742.73/s
+(n=200000)
St3: 2 wallclock secs ( 2.38 usr + 0.00 sys = 2.38 CPU) @ 84033.61/s
+(n=200000)
Str: 5 wallclock secs ( 4.90 usr + 0.00 sys = 4.90 CPU) @ 40816.33/s
+(n=200000)
$ /opt/perl-5.10.1/bin/perl test.pl
Benchmark: timing 200000 iterations of Big, Lan, Mat, Pak, St2, St3, S
+tr...
Big: 6 wallclock secs ( 6.30 usr + 0.00 sys = 6.30 CPU) @ 31746.03/s
+(n=200000)
Lan: 5 wallclock secs ( 4.83 usr + 0.00 sys = 4.83 CPU) @ 41407.87/s
+(n=200000)
Mat: 8 wallclock secs ( 7.47 usr + 0.01 sys = 7.48 CPU) @ 26737.97/s
+(n=200000)
Pak: 6 wallclock secs ( 6.03 usr + 0.00 sys = 6.03 CPU) @ 33167.50/s
+(n=200000)
St2: 4 wallclock secs ( 4.46 usr + 0.00 sys = 4.46 CPU) @ 44843.05/s
+(n=200000)
St3: 3 wallclock secs ( 2.46 usr + 0.00 sys = 2.46 CPU) @ 81300.81/s
+(n=200000)
Str: 5 wallclock secs ( 5.05 usr + 0.00 sys = 5.05 CPU) @ 39603.96/s
+(n=200000)
$ /opt/perl-5.12.5/bin/perl test.pl
Benchmark: timing 200000 iterations of Big, Lan, Mat, Pak, St2, St3, S
+tr...
Big: 7 wallclock secs ( 6.21 usr + 0.01 sys = 6.22 CPU) @ 32154.34/s
+(n=200000)
Lan: 4 wallclock secs ( 4.85 usr + 0.00 sys = 4.85 CPU) @ 41237.11/s
+(n=200000)
Mat: 7 wallclock secs ( 7.36 usr + 0.01 sys = 7.37 CPU) @ 27137.04/s
+(n=200000)
Pak: 6 wallclock secs ( 5.90 usr + 0.00 sys = 5.90 CPU) @ 33898.31/s
+(n=200000)
St2: 4 wallclock secs ( 4.47 usr + 0.00 sys = 4.47 CPU) @ 44742.73/s
+(n=200000)
St3: 3 wallclock secs ( 2.45 usr + 0.00 sys = 2.45 CPU) @ 81632.65/s
+(n=200000)
Str: 5 wallclock secs ( 5.04 usr + 0.00 sys = 5.04 CPU) @ 39682.54/s
+(n=200000)
$ /opt/perl-5.14.4/bin/perl test.pl
Benchmark: timing 200000 iterations of Big, Lan, Mat, Pak, St2, St3, S
+tr...
Big: 6 wallclock secs ( 6.16 usr + 0.00 sys = 6.16 CPU) @ 32467.53/s
+(n=200000)
Lan: 5 wallclock secs ( 4.62 usr + 0.00 sys = 4.62 CPU) @ 43290.04/s
+(n=200000)
Mat: 7 wallclock secs ( 7.42 usr + 0.00 sys = 7.42 CPU) @ 26954.18/s
+(n=200000)
Pak: 6 wallclock secs ( 5.87 usr + 0.00 sys = 5.87 CPU) @ 34071.55/s
+(n=200000)
St2: 4 wallclock secs ( 4.38 usr + 0.00 sys = 4.38 CPU) @ 45662.10/s
+(n=200000)
St3: 3 wallclock secs ( 2.30 usr + 0.00 sys = 2.30 CPU) @ 86956.52/s
+(n=200000)
Str: 5 wallclock secs ( 5.04 usr + 0.00 sys = 5.04 CPU) @ 39682.54/s
+(n=200000)
$ /opt/perl-5.16.3/bin/perl test.pl
Benchmark: timing 200000 iterations of Big, Lan, Mat, Pak, St2, St3, S
+tr...
Big: 7 wallclock secs ( 6.70 usr + 0.01 sys = 6.71 CPU) @ 29806.26/s
+(n=200000)
Lan: 5 wallclock secs ( 4.84 usr + 0.00 sys = 4.84 CPU) @ 41322.31/s
+(n=200000)
Mat: 7 wallclock secs ( 7.03 usr + 0.00 sys = 7.03 CPU) @ 28449.50/s
+(n=200000)
Pak: 6 wallclock secs ( 6.32 usr + 0.00 sys = 6.32 CPU) @ 31645.57/s
+(n=200000)
St2: 5 wallclock secs ( 4.43 usr + 0.00 sys = 4.43 CPU) @ 45146.73/s
+(n=200000)
St3: 2 wallclock secs ( 2.40 usr + 0.00 sys = 2.40 CPU) @ 83333.33/s
+(n=200000)
Str: 6 wallclock secs ( 5.45 usr + 0.01 sys = 5.46 CPU) @ 36630.04/s
+(n=200000)
$ /opt/perl-5.18.4/bin/perl test.pl
Benchmark: timing 200000 iterations of Big, Lan, Mat, Pak, St2, St3, S
+tr...
Big: 7 wallclock secs ( 6.82 usr + 0.00 sys = 6.82 CPU) @ 29325.51/s
+(n=200000)
Lan: 5 wallclock secs ( 5.00 usr + 0.00 sys = 5.00 CPU) @ 40000.00/s
+(n=200000)
Mat: 8 wallclock secs ( 7.64 usr + 0.00 sys = 7.64 CPU) @ 26178.01/s
+(n=200000)
Pak: 6 wallclock secs ( 6.30 usr + 0.00 sys = 6.30 CPU) @ 31746.03/s
+(n=200000)
St2: 5 wallclock secs ( 4.88 usr + 0.01 sys = 4.89 CPU) @ 40899.80/s
+(n=200000)
St3: 3 wallclock secs ( 2.56 usr + 0.00 sys = 2.56 CPU) @ 78125.00/s
+(n=200000)
Str: 6 wallclock secs ( 5.65 usr + 0.01 sys = 5.66 CPU) @ 35335.69/s
+(n=200000)
$ /opt/perl-5.20.3/bin/perl test.pl
Benchmark: timing 200000 iterations of Big, Lan, Mat, Pak, St2, St3, S
+tr...
Big: 7 wallclock secs ( 6.50 usr + 0.00 sys = 6.50 CPU) @ 30769.23/s
+(n=200000)
Lan: 5 wallclock secs ( 5.02 usr + 0.00 sys = 5.02 CPU) @ 39840.64/s
+(n=200000)
Mat: 7 wallclock secs ( 7.35 usr + 0.00 sys = 7.35 CPU) @ 27210.88/s
+(n=200000)
Pak: 7 wallclock secs ( 6.25 usr + 0.00 sys = 6.25 CPU) @ 32000.00/s
+(n=200000)
St2: 4 wallclock secs ( 4.61 usr + 0.00 sys = 4.61 CPU) @ 43383.95/s
+(n=200000)
St3: 3 wallclock secs ( 2.68 usr + 0.00 sys = 2.68 CPU) @ 74626.87/s
+(n=200000)
Str: 6 wallclock secs ( 5.63 usr + 0.00 sys = 5.63 CPU) @ 35523.98/s
+(n=200000)
$ /opt/perl-5.22.4/bin/perl test.pl
Benchmark: timing 200000 iterations of Big, Lan, Mat, Pak, St2, St3, S
+tr...
Big: 6 wallclock secs ( 5.89 usr + 0.00 sys = 5.89 CPU) @ 33955.86/s
+(n=200000)
Lan: 5 wallclock secs ( 4.68 usr + 0.00 sys = 4.68 CPU) @ 42735.04/s
+(n=200000)
Mat: 6 wallclock secs ( 6.76 usr + 0.01 sys = 6.77 CPU) @ 29542.10/s
+(n=200000)
Pak: 6 wallclock secs ( 5.42 usr + 0.00 sys = 5.42 CPU) @ 36900.37/s
+(n=200000)
St2: 5 wallclock secs ( 4.75 usr + 0.00 sys = 4.75 CPU) @ 42105.26/s
+(n=200000)
St3: 2 wallclock secs ( 2.42 usr + 0.00 sys = 2.42 CPU) @ 82644.63/s
+(n=200000)
Str: 5 wallclock secs ( 4.84 usr + 0.00 sys = 4.84 CPU) @ 41322.31/s
+(n=200000)
$ /opt/perl-5.24.2/bin/perl test.pl
Benchmark: timing 200000 iterations of Big, Lan, Mat, Pak, St2, St3, S
+tr...
Big: 6 wallclock secs ( 6.23 usr + 0.01 sys = 6.24 CPU) @ 32051.28/s
+(n=200000)
Lan: 5 wallclock secs ( 4.52 usr + 0.00 sys = 4.52 CPU) @ 44247.79/s
+(n=200000)
Mat: 7 wallclock secs ( 6.92 usr + 0.01 sys = 6.93 CPU) @ 28860.03/s
+(n=200000)
Pak: 5 wallclock secs ( 5.58 usr + 0.00 sys = 5.58 CPU) @ 35842.29/s
+(n=200000)
St2: 5 wallclock secs ( 4.53 usr + 0.00 sys = 4.53 CPU) @ 44150.11/s
+(n=200000)
St3: 2 wallclock secs ( 2.30 usr + 0.00 sys = 2.30 CPU) @ 86956.52/s
+(n=200000)
Str: 5 wallclock secs ( 4.74 usr + 0.01 sys = 4.75 CPU) @ 42105.26/s
+(n=200000)
$ /opt/perl-5.26.0/bin/perl test.pl
Benchmark: timing 200000 iterations of Big, Lan, Mat, Pak, St2, St3, S
+tr...
Big: 6 wallclock secs ( 6.04 usr + 0.01 sys = 6.05 CPU) @ 33057.85/s
+(n=200000)
Lan: 4 wallclock secs ( 4.47 usr + 0.00 sys = 4.47 CPU) @ 44742.73/s
+(n=200000)
Mat: 7 wallclock secs ( 7.00 usr + 0.01 sys = 7.01 CPU) @ 28530.67/s
+(n=200000)
Pak: 6 wallclock secs ( 5.56 usr + 0.02 sys = 5.58 CPU) @ 35842.29/s
+(n=200000)
St2: 5 wallclock secs ( 4.71 usr + 0.02 sys = 4.73 CPU) @ 42283.30/s
+(n=200000)
St3: 2 wallclock secs ( 2.17 usr + 0.01 sys = 2.18 CPU) @ 91743.12/s
+(n=200000)
Str: 5 wallclock secs ( 4.78 usr + 0.01 sys = 4.79 CPU) @ 41753.65/s
+(n=200000)
Results from cperl-5.24.2c.
$ /opt/cperl-5.24.2c/bin/cperl test.pl
Benchmark: timing 200000 iterations of Big, Lan, Mat, Pak, St2, St3, S
+tr...
Big: 6 wallclock secs ( 5.58 usr + 0.01 sys = 5.59 CPU) @ 35778.18/s
+(n=200000)
Lan: 4 wallclock secs ( 4.47 usr + 0.00 sys = 4.47 CPU) @ 44742.73/s
+(n=200000)
Mat: 5 wallclock secs ( 5.98 usr + 0.00 sys = 5.98 CPU) @ 33444.82/s
+(n=200000)
Pak: 5 wallclock secs ( 5.35 usr + 0.01 sys = 5.36 CPU) @ 37313.43/s
+(n=200000)
St2: 4 wallclock secs ( 4.46 usr + 0.00 sys = 4.46 CPU) @ 44843.05/s
+(n=200000)
St3: 3 wallclock secs ( 2.09 usr + 0.00 sys = 2.09 CPU) @ 95693.78/s
+(n=200000)
Str: 4 wallclock secs ( 4.61 usr + 0.00 sys = 4.61 CPU) @ 43383.95/s
+(n=200000)