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

Reply via email to