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

Reply via email to