for my $op (qw(encode decode)){
my ($meth, $from, $to) = ($op eq 'encode') ?
(\&encode, 'utf8', 'utf16') : (\&decode, 'utf16', 'utf8');
+ my $XS = sub {
+ Encode::Unicode::set_transcoder("xs");
+ $meth->('UTF-16BE', $S{$from}{$sz}{$cp})
+ eq $S{$to}{$sz}{$cp}
+ or die "$op,$from,$to,$sz,$cp";
+ };
my $modern = sub {
Encode::Unicode::set_transcoder("modern");
$meth->('UTF-16BE', $S{$from}{$sz}{$cp})
print "---- $op length=$sz/range=$cp ----\n";
my $r = timethese($count,
{
- "Modern" => $modern,
+ "XS" => $XS,
+ "Modern" => $modern,
"Classic" => $classic,
},
'none',