Re: [PATCH] diff-highlight: Fix broken multibyte string
- From
Kyle J. McKay <mackyle@gmail.com>
- Date
- Apr 3, 2015, 22:24 UTC
- Message-ID
- <CDAB9DBC-0F59-4176-BD9F-620A124EA300@gmail.com>
- In-Reply-To
- <20150403220821.GB11220@peff.net>
On Apr 3, 2015, at 15:08, Jeff King wrote:
Show 26 quoted lines
> 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