In perl.git, the branch blead has been updated <http://perl5.git.perl.org/perl.git/commitdiff/f0ee386351fbbf1a41ead86e9163f688d1b37dc1?hp=586e992d6da290482e162f13db0dd3f4533b4cd6>
- Log ----------------------------------------------------------------- commit f0ee386351fbbf1a41ead86e9163f688d1b37dc1 Author: Father Chrysostomos <spr...@cpan.org> Date: Fri Oct 17 18:14:40 2014 -0700 Use sv_catpvn instead of sv_catsv in doop.c:do_join Bunchmarking shows that SvPV+sv_catpvn is faster that sv_catsv. Why exactly I donât know, but perhaps fewer functions and flag checks are the cause. ----------------------------------------------------------------------- Summary of changes: doop.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/doop.c b/doop.c index 3b6f1e7..007ff5e 100644 --- a/doop.c +++ b/doop.c @@ -709,13 +709,22 @@ Perl_do_join(pTHX_ SV *sv, SV *delim, SV **mark, SV **sp) if (delimlen) { for (; items > 0; items--,mark++) { + STRLEN len; + const char *s; sv_catsv_nomg(sv,delim); - sv_catsv(sv,*mark); + s = SvPV_const(*mark,len); + sv_catpvn_flags(sv,s,len, + DO_UTF8(*mark) ? SV_CATUTF8 : SV_CATBYTES); } } else { for (; items > 0; items--,mark++) - sv_catsv(sv,*mark); + { + STRLEN len; + const char *s = SvPV_const(*mark,len); + sv_catpvn_flags(sv,s,len, + DO_UTF8(*mark) ? SV_CATUTF8 : SV_CATBYTES); + } } SvSETMAGIC(sv); } -- Perl5 Master Repository