#!/usr/bin/perl
use warnings;
use strict;
use Benchmark qw{ cmpthese };
sub precat {
my ($string, $prefix) = @_;
$string = $prefix . $string;
$string
}
sub Substr {
my ($string, $prefix) = @_;
substr $string, 0, 0, $prefix;
$string
}
sub subst {
my ($string, $prefix) = @_;
$string =~ s/^/$prefix/;
$string
}
use Test::More;
is precat('def', 'abc'), 'abcdef', 'correct concat';
is Substr('def', 'abc'), 'abcdef', 'same substr';
is subst('def', 'abc'), 'abcdef', 'same subst';
done_testing(3);
cmpthese( -3,
{ precat => q( precat 'def', 'abc' ),
substr => q( Substr 'def', 'abc' ),
subst => q( subst 'def', 'abc' ),
});
####
ok 1 - correct concat
ok 2 - same substr
ok 3 - same subst
1..3
Rate subst precat substr
subst 1770916/s -- -38% -47%
precat 2860656/s 62% -- -15%
substr 3350927/s 89% 17% --
####
($q=q:Sq=~/;[c](.)(.)/;chr(-||-|5+lengthSq)`"S|oS2"`map{chr |+ord
}map{substrSq`S_+|`|}3E|-|`7**2-3:)=~y+S|`+$1,++print+eval$q,q,a,