From: Kyle J. McKay Date: Fri, 03 Apr 2015 22:24:09 GMT Subject: Re: [PATCH] diff-highlight: Fix broken multibyte string Message-ID: In-Reply-To: <20150403220821.GB11220@peff.net> On Apr 3, 2015, at 15:08, Jeff King wrote: > Doing: > > diff --git a/contrib/diff-highlight/diff-highlight b/contrib/diff- > highlight/diff-highlight > index 08c88bb..1c4b599 100755 > --- a/contrib/diff-highlight/diff-highlight > +++ b/contrib/diff-highlight/diff-highlight > @@ -165,7 +165,7 @@ sub highlight_pair { > sub split_line { > local $_ = shift; > return map { /$COLOR/ ? $_ : (split //) } > - split /($COLOR*)/; > + split /($COLOR+)/; > } > > sub highlight_line { > > gives me a 25% speed improvement, and the same output processing > git.git's entire "git log -p" output. > > I thought that meant we could also optimize out the "map" call > entirely, > and just use the first split (with "*") to end up with a list of > $COLOR > chunks and single characters, but it does not seem to work. So maybe I > am misreading something about what is going on. I think our emails crossed in flight... Using just the first split (with "*") produces useless empty elements which I think ends up causing problems. I suppose you could surround it with a grep /./ to remove them but that would defeat the point of the optimization. -Kyle