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