Notes on rsync profiling strlcpy is hot: 0.00 0.00 1/7735635 push_dir [68] 0.00 0.00 1/7735635 pop_dir [71] 0.00 0.00 1/7735635 send_file_list [15] 0.01 0.00 18857/7735635 send_files [4] 0.04 0.00 129260/7735635 send_file_entry [18] 0.04 0.00 129260/7735635 make_file [20] 0.04 0.00 141666/7735635 send_directory [36] 2.29 0.00 7316589/7735635 f_name [13] [14] 11.7 2.42 0.00 7735635 strlcpy [14] Here's the top few functions: 46.23 9.57 9.57 13160929 0.00 0.00 mdfour64 14.78 12.63 3.06 13160929 0.00 0.00 copy64 11.69 15.05 2.42 7735635 0.00 0.00 strlcpy 10.05 17.13 2.08 41438 0.05 0.38 sum_update 4.11 17.98 0.85 13159996 0.00 0.00 mdfour_update 1.50 18.29 0.31 file_compare 1.45 18.59 0.30 129261 0.00 0.01 send_file_entry 1.23 18.84 0.26 2557585 0.00 0.00 f_name 1.11 19.07 0.23 1483750 0.00 0.00 u_strcmp 1.11 19.30 0.23 118129 0.00 0.00 writefd_unbuffered 0.92 19.50 0.19 1085011 0.00 0.00 writefd 0.43 19.59 0.09 156987 0.00 0.00 read_timeout 0.43 19.68 0.09 129261 0.00 0.00 clean_fname 0.39 19.75 0.08 32887 0.00 0.38 matched 0.34 19.82 0.07 1 70.00 16293.92 send_files 0.29 19.89 0.06 129260 0.00 0.00 make_file 0.29 19.95 0.06 75430 0.00 0.00 read_unbuffered mdfour could perhaps be made faster: /* NOTE: This code makes no attempt to be fast! */ There might be an optimized version somewhere that we can borrow.