Here is another place where diff can be improved: @@ -141,8 +140,9 @@ My_runops(pTHX) // Do not trace variables in DB:: module if( SvOK( inDB ) ) continue; - sv_inc_nomg( inDB ); + // save_item( inDB ); + sv_inc_nomg( inDB ); dSP; SINFO; SAVETMPS; // printf( "SWITCH\n" );
This would be better it the patch looks like: ( this patch is manually created just to light the idea. It may contain errors) @@ -140,6 +140,7 @@ My_runops(pTHX) // Do not trace variables in DB:: module if( SvOK( inDB ) ) continue; + + // save_item( inDB ); sv_inc_nomg( inDB ); - dSP; SINFO; SAVETMPS; As we can see, here the `sv_inc_nomg( inDB );` line is unchanged and `// save_item( inDB );` is added. Here we just add/remove empty lines and patch looks more better. I think (and this is my assumption), the the diff algorithm should take into account the string length. This is more better to add/remove more short lines 21.11.2016, 20:55, "Jacob Keller" <jacob.kel...@gmail.com>: > On Mon, Nov 21, 2016 at 10:17 AM, Stefan Beller <sbel...@google.com> wrote: >> On Mon, Nov 21, 2016 at 8:56 AM, Jacob Keller <jacob.kel...@gmail.com> >> wrote: >>> On Mon, Nov 21, 2016 at 12:11 AM, KES <kes-...@yandex.ru> wrote: >>>> Hi. >>> >>> Hi, >>> >>>> I have some question about how diff works then give proposal: >>>> >>>> it will be very useful for each "symbol" store additional meta info as >>>> source line length. So in this case when git counter two equal sequence of >>>> commands it will do further comparison: Adds 23 chars deletes none VS adds >>>> 75 chars deletes 46 >>>> >>>> Actually I got this: >>>> >>>> @@ -129,8 +132,9 @@ sub _preprocess_message { >>>> sub _process_message { >>>> my ($self, $message) = @_; >>>> >>>> - my $method = ref($message) eq 'HASH' ? $message->{method} : undef; >>>> + my $time = [ gettimeofday ]; >>>> >>>> + my $method = ref($message) eq 'HASH' ? $message->{method} : undef; >>>> return $self->send_error(ERROR_REQUEST_INVALID) >>>> unless defined($method); >>>> >>>> Instead of expected: >>>> @@ -129,6 +132,8 @@ sub _preprocess_message { >>>> sub _process_message { >>>> my ($self, $message) = @_; >>>> >>>> + my $time = [ gettimeofday ]; >>>> + >>>> my $method = ref($message) eq 'HASH' ? $message->{method} : undef; >>>> - >>>> return $self->send_error(ERROR_REQUEST_INVALID) >>> >>> Have you tried the various options for git to search for smaller >>> diffs? Or using the other diff algorithms such as histogram instead of >>> patience? >> >> The newest version of Git comes with a flag to move around the diff >> better, based on the work at https://github.com/mhagger/diff-slider-tools > > Unfortunately in this case, I'm not convinced that it will improve the > diff. It's worth a try as well though. > > Thanks, > Jake