You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by st...@apache.org on 2013/05/23 01:10:37 UTC

svn commit: r1485488 - /subversion/trunk/subversion/libsvn_diff/diff_file.c

Author: stefan2
Date: Wed May 22 23:10:37 2013
New Revision: 1485488

URL: http://svn.apache.org/r1485488
Log:
Minor optimization in diff code: stop comparing data once we found a mismatch.
Further iterations won't change the result.

* subversion/libsvn_diff/diff_file.c
  (find_identical_suffix): exit the loops as soon as CAN_READ_WORD or IS_MATCH
                           are FALSE

Modified:
    subversion/trunk/subversion/libsvn_diff/diff_file.c

Modified: subversion/trunk/subversion/libsvn_diff/diff_file.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_diff/diff_file.c?rev=1485488&r1=1485487&r2=1485488&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_diff/diff_file.c (original)
+++ subversion/trunk/subversion/libsvn_diff/diff_file.c Wed May 22 23:10:37 2013
@@ -634,7 +634,7 @@ find_identical_suffix(apr_off_t *suffix_
         min_curp[0] += suffix_min_offset0;
 
       /* Scan quickly by reading with machine-word granularity. */
-      for (i = 0, can_read_word = TRUE; i < file_len; i++)
+      for (i = 0, can_read_word = TRUE; can_read_word && i < file_len; i++)
         can_read_word = can_read_word
                         && (  (file_for_suffix[i].curp + 1
                                  - sizeof(apr_uintptr_t))
@@ -652,7 +652,7 @@ find_identical_suffix(apr_off_t *suffix_
           if (contains_eol(chunk))
             break;
 
-          for (i = 1, is_match = TRUE; i < file_len; i++)
+          for (i = 1, is_match = TRUE; is_match && i < file_len; i++)
             is_match = is_match
                        && (   chunk
                            == *(const apr_uintptr_t *)