The branch, master has been updated
       via  739fa967 Change odd-ball map_ptr() to use remainder like the others.
       via  d474f298 Improve performance of file_checksum()
      from  a863c62c More NEWS updates.

https://git.samba.org/?p=rsync.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 739fa967378bfa8956352c9789692a5232a67f66
Author: Wayne Davison <wa...@opencoder.net>
Date:   Sun May 24 20:38:48 2020 -0700

    Change odd-ball map_ptr() to use remainder like the others.

commit d474f2986e656a848780bc8b36a02297e75eb3ab
Author: Jorrit Jongma <g...@jongma.org>
Date:   Mon May 25 00:30:55 2020 +0200

    Improve performance of file_checksum()
    
    Previously files were hashed in blocks of CSUM_CHUNK (64) bytes. This
    causes significant overhead. The CSUM_CHUNK define cannot be changed as
    md5.c depends on it, but there is no obvious reason to use it in
    file_checksum(). By using CHUNK_SIZE (32 kB) instead, in some test
    cases throughput more than doubles.

-----------------------------------------------------------------------

Summary of changes:
 checksum.c | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)


Changeset truncated at 500 lines:

diff --git a/checksum.c b/checksum.c
index 2e804c47..fb771402 100644
--- a/checksum.c
+++ b/checksum.c
@@ -294,7 +294,7 @@ void file_checksum(const char *fname, const STRUCT_STAT 
*st_p, char *sum)
        if (fd == -1)
                return;
 
-       buf = map_file(fd, len, MAX_MAP_SIZE, CSUM_CHUNK);
+       buf = map_file(fd, len, MAX_MAP_SIZE, CHUNK_SIZE);
 
        switch (checksum_type) {
          case CSUM_MD5: {
@@ -302,8 +302,8 @@ void file_checksum(const char *fname, const STRUCT_STAT 
*st_p, char *sum)
 
                MD5_Init(&m5);
 
-               for (i = 0; i + CSUM_CHUNK <= len; i += CSUM_CHUNK)
-                       MD5_Update(&m5, (uchar *)map_ptr(buf, i, CSUM_CHUNK), 
CSUM_CHUNK);
+               for (i = 0; i + CHUNK_SIZE <= len; i += CHUNK_SIZE)
+                       MD5_Update(&m5, (uchar *)map_ptr(buf, i, CHUNK_SIZE), 
CHUNK_SIZE);
 
                remainder = (int32)(len - i);
                if (remainder > 0)
@@ -319,8 +319,8 @@ void file_checksum(const char *fname, const STRUCT_STAT 
*st_p, char *sum)
 
                MD4_Init(&m4);
 
-               for (i = 0; i + CSUM_CHUNK <= len; i += CSUM_CHUNK)
-                       MD4_Update(&m4, (uchar *)map_ptr(buf, i, CSUM_CHUNK), 
CSUM_CHUNK);
+               for (i = 0; i + CHUNK_SIZE <= len; i += CHUNK_SIZE)
+                       MD4_Update(&m4, (uchar *)map_ptr(buf, i, CHUNK_SIZE), 
CHUNK_SIZE);
 
                remainder = (int32)(len - i);
                if (remainder > 0)
@@ -337,8 +337,8 @@ void file_checksum(const char *fname, const STRUCT_STAT 
*st_p, char *sum)
 
                mdfour_begin(&m);
 
-               for (i = 0; i + CSUM_CHUNK <= len; i += CSUM_CHUNK)
-                       mdfour_update(&m, (uchar *)map_ptr(buf, i, CSUM_CHUNK), 
CSUM_CHUNK);
+               for (i = 0; i + CHUNK_SIZE <= len; i += CHUNK_SIZE)
+                       mdfour_update(&m, (uchar *)map_ptr(buf, i, CHUNK_SIZE), 
CHUNK_SIZE);
 
                /* Prior to version 27 an incorrect MD4 checksum was computed
                 * by failing to call mdfour_tail() for block sizes that
@@ -362,9 +362,9 @@ void file_checksum(const char *fname, const STRUCT_STAT 
*st_p, char *sum)
                        exit_cleanup(RERR_STREAMIO);
                }
 
-               for (i = 0; i + CSUM_CHUNK <= len; i += CSUM_CHUNK) {
+               for (i = 0; i + CHUNK_SIZE <= len; i += CHUNK_SIZE) {
                        XXH_errorcode const updateResult =
-                           XXH64_update(state, (uchar *)map_ptr(buf, i, 
CSUM_CHUNK), CSUM_CHUNK);
+                           XXH64_update(state, (uchar *)map_ptr(buf, i, 
CHUNK_SIZE), CHUNK_SIZE);
                        if (updateResult == XXH_ERROR) {
                                rprintf(FERROR, "error computing XXH64 hash");
                                exit_cleanup(RERR_STREAMIO);
@@ -373,7 +373,7 @@ void file_checksum(const char *fname, const STRUCT_STAT 
*st_p, char *sum)
 
                remainder = (int32)(len - i);
                if (remainder > 0)
-                       XXH64_update(state, (uchar *)map_ptr(buf, i, 
CSUM_CHUNK), remainder);
+                       XXH64_update(state, (uchar *)map_ptr(buf, i, 
remainder), remainder);
                SIVAL64(sum, 0, XXH64_digest(state));
 
                XXH64_freeState(state);


-- 
The rsync repository.

_______________________________________________
rsync-cvs mailing list
rsync-cvs@lists.samba.org
https://lists.samba.org/mailman/listinfo/rsync-cvs

Reply via email to