Great!
I've merged this to master now which means it will be in the latest beta in 15-30 minutes and released in v1.62
I think merging the checkers and transfers is worth doing but that can be for 1.63. I made an issue here: accounting: merge checkers and transfers · Issue #6797 · rclone/rclone · GitHub which is probably completely incomprehensible to anyone except me, but if you'd like to write extra stuff on there, that would be great!
I think the problem comes on the file we are reading not the file we are writing. Here is my demo
$ rclone --stats 0.25s --stats-one-line -v copy 1G :memory:
2023/03/01 11:21:39 INFO : 54.996 MiB / 1 GiB, 5%, 0 B/s, ETA -
2023/03/01 11:21:39 INFO : 110.996 MiB / 1 GiB, 11%, 0 B/s, ETA -
2023/03/01 11:21:40 INFO : 165.996 MiB / 1 GiB, 16%, 0 B/s, ETA -
2023/03/01 11:21:40 INFO : 221.996 MiB / 1 GiB, 22%, 221.884 MiB/s, ETA 3s
2023/03/01 11:21:40 INFO : 276.996 MiB / 1 GiB, 27%, 221.884 MiB/s, ETA 3s
2023/03/01 11:21:40 INFO : 330.996 MiB / 1 GiB, 32%, 221.884 MiB/s, ETA 3s
2023/03/01 11:21:41 INFO : 386.996 MiB / 1 GiB, 38%, 221.884 MiB/s, ETA 2s
2023/03/01 11:21:41 INFO : 448.227 MiB / 1 GiB, 44%, 221.884 MiB/s, ETA 2s
2023/03/01 11:21:41 INFO : 485.996 MiB / 1 GiB, 47%, 224.056 MiB/s, ETA 2s
2023/03/01 11:21:41 INFO : 545.996 MiB / 1 GiB, 53%, 224.056 MiB/s, ETA 2s
2023/03/01 11:21:42 INFO : 560.289 MiB / 1 GiB, 55%, 224.056 MiB/s, ETA 2s
2023/03/01 11:21:42 INFO : 628.996 MiB / 1 GiB, 61%, 224.056 MiB/s, ETA 1s
2023/03/01 11:21:42 INFO : 688.996 MiB / 1 GiB, 67%, 209.621 MiB/s, ETA 1s
2023/03/01 11:21:42 INFO : 700.367 MiB / 1 GiB, 68%, 209.621 MiB/s, ETA 1s
2023/03/01 11:21:43 INFO : 755.996 MiB / 1 GiB, 74%, 209.621 MiB/s, ETA 1s
2023/03/01 11:21:43 INFO : 813.996 MiB / 1 GiB, 79%, 203.467 MiB/s, ETA 1s
2023/03/01 11:21:43 INFO : 873.996 MiB / 1 GiB, 85%, 203.467 MiB/s, ETA 0s
2023/03/01 11:21:43 INFO : 900.996 MiB / 1 GiB, 88%, 203.467 MiB/s, ETA 0s
2023/03/01 11:21:44 INFO : 962.996 MiB / 1 GiB, 94%, 203.467 MiB/s, ETA 0s
2023/03/01 11:21:44 INFO : 1022.996 MiB / 1 GiB, 100%, 204.565 MiB/s, ETA 0s
2023/03/01 11:21:44 INFO : 1 GiB / 1 GiB, 100%, 204.565 MiB/s, ETA 0s
2023/03/01 11:21:44 INFO : 1 GiB / 1 GiB, 100%, 204.565 MiB/s, ETA 0s
2023/03/01 11:21:45 INFO : 1 GiB / 1 GiB, 100%, 204.565 MiB/s, ETA 0s
2023/03/01 11:21:45 INFO : 1 GiB / 1 GiB, 100%, 170.638 MiB/s, ETA 0s
2023/03/01 11:21:45 INFO : 1 GiB / 1 GiB, 100%, 170.638 MiB/s, ETA 0s
2023/03/01 11:21:45 INFO : 1 GiB / 1 GiB, 100%, 170.638 MiB/s, ETA 0s
2023/03/01 11:21:46 INFO : 1 GiB / 1 GiB, 100%, 170.638 MiB/s, ETA 0s
2023/03/01 11:21:46 INFO : 1 GiB / 1 GiB, 100%, 170.638 MiB/s, ETA 0s
2023/03/01 11:21:46 INFO : 1 GiB / 1 GiB, 100%, 146.261 MiB/s, ETA 0s
2023/03/01 11:21:46 INFO : 1 GiB / 1 GiB, 100%, 146.261 MiB/s, ETA 0s
2023/03/01 11:21:47 INFO : 1G: Copied (new)
2023/03/01 11:21:47 INFO : 1 GiB / 1 GiB, 100%, 146.261 MiB/s, ETA 0s
vs
$ rclone --stats 0.25s --stats-one-line -v copy 1G :memory: --ignore-checksum
2023/03/01 11:21:55 INFO : 126.996 MiB / 1 GiB, 12%, 0 B/s, ETA -
2023/03/01 11:21:56 INFO : 248.996 MiB / 1 GiB, 24%, 0 B/s, ETA -
2023/03/01 11:21:56 INFO : 358.578 MiB / 1 GiB, 35%, 0 B/s, ETA -
2023/03/01 11:21:56 INFO : 465.996 MiB / 1 GiB, 46%, 465.989 MiB/s, ETA 1s
2023/03/01 11:21:56 INFO : 560.289 MiB / 1 GiB, 55%, 465.989 MiB/s, ETA 0s
2023/03/01 11:21:57 INFO : 698.996 MiB / 1 GiB, 68%, 465.989 MiB/s, ETA 0s
2023/03/01 11:21:57 INFO : 797.996 MiB / 1 GiB, 78%, 465.989 MiB/s, ETA 0s
2023/03/01 11:21:57 INFO : 875.461 MiB / 1 GiB, 85%, 437.539 MiB/s, ETA 0s
2023/03/01 11:21:57 INFO : 1019.996 MiB / 1 GiB, 100%, 437.539 MiB/s, ETA 0s
2023/03/01 11:21:57 INFO : 1G: Copied (new)
2023/03/01 11:21:57 INFO : 1 GiB / 1 GiB, 100%, 437.539 MiB/s, ETA 0s
I managed to work out what is going on here... The first part where transfer < 100% we are reading from the file and doing the MD5 hash simultaneously, hence the reduced transfer rate. The second part where transfer == 100% we are hashing the destination file.
So I think things are as expected here, though it would be nice if it said "hashing" for the second part where transfer == 100% and I think it will do once I've done the issue above.