# pre-define relationships for runtime efficiency
####
#!/usr/bin/perl
use strict;
use warnings;
use Benchmark qw':all';
my %rot = (
'A' => 'N','B' => 'O','C' => 'P','D' => 'Q','E' => 'R','F' => 'S',
'G' => 'T','H' => 'U','I' => 'V','J' => 'W','K' => 'X','L' => 'Y',
'M' => 'Z','N' => 'A','O' => 'B','P' => 'C','Q' => 'D','R' => 'E',
'S' => 'F','T' => 'G','U' => 'H','V' => 'I','W' => 'J','X' => 'K',
'Y' => 'L','Z' => 'M','a' => 'n','b' => 'o','c' => 'p','d' => 'q',
'e' => 'r','f' => 's','g' => 't','h' => 'u','i' => 'v','j' => 'w',
'k' => 'x','l' => 'y','m' => 'z','n' => 'a','o' => 'b','p' => 'c',
'q' => 'd','r' => 'e','s' => 'f','t' => 'g','u' => 'h','v' => 'i',
'w' => 'j','x' => 'k','y' => 'l','z' => 'm',
);
sub rot13 ($) {
# as close as possible to source project's code
join '', map { exists $rot{$_} ? $rot{$_} : $_ } split('',shift);
}
sub rot13tr ($) {
(my $s = shift) =~ tr/a-zA-Z/n-za-mN-ZA-M/;
$s;
}
our $data = ;
cmpthese( 10000, {
'table' => 'my $a = rot13($data),"\n"',
'tr' => 'my $a = rot13tr($data),"\n"',
} );
# for PM-friendliness, I have added newlines to the data -- none are present
# in the "production" code.
__DATA__
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Vivamus luctus nulla
sed tellus. Sed vitae sapien in elit vestibulum faucibus. Maecenas sollicitudin,
magna quis vestibulum convallis, ligula nulla fringilla augue, nec rutrum dolor
quam vel justo. Vivamus nisi odio, ullamcorper sed, venenatis id, imperdiet
eleifend, neque. Vivamus justo felis, euismod in, convallis auctor, egestas id,
purus. In rutrum nisi in lectus. Aliquam elementum placerat dui. Integer ut pede
sit amet magna pulvinar placerat. Maecenas massa lorem, lobortis ut, adipiscing
at, suscipit nec, lectus. Curabitur mattis adipiscing sem. Mauris pharetra
vehicula eros. Sed pellentesque elit laoreet augue. Cras non tellus. Quisque
volutpat lectus in sem. Fusce vulputate justo ut pede. Aliquam ante pede, tempor
in, dictum in, blandit eu, sapien. Morbi vestibulum, metus eu auctor vulputate,
nulla lectus condimentum nisi, ac pulvinar ligula nunc in felis. Curabitur id
orci ac est luctus molestie.
####
table 387/s -- -100%
tr 114286/s 29468% --