Comment Comment by Freaky Neat. I touched this code about 8 months later to avoid the per-block elapsed() call: https://github.com/uutils/coreutils/commit/cf7b90bbe7cb87099...Mirrored the way I implemented status=progress in FreeBSD dd, though there the flag was set by a SIGALRM timer: https://freshbsd.org/freebsd/src/commit/4767c42c1146459eb751...It would appear GNU dd 9.9 still does a call for every block. Low-hanging fruit if anyone fancies it: dd if=/dev/zero of=/dev/null count=100000000 status=progress 51200000000 bytes transferred in 18.644004 secs (2746191200 bytes/sec) target/release/dd if=/dev/zero of=/dev/null count=100000000 status=progress 51200000000 bytes (51 GB, 48 GiB) copied, 20.8772 s, 2.5 GB/s gdd if=/dev/zero of=/dev/null count=100000000 status=progress 51200000000 bytes (51 GB, 48 GiB) copied, 23.6744 s, 2.2 GB/s parent Freaky 1 month ago
Mirrored the way I implemented status=progress in FreeBSD dd, though there the flag was set by a SIGALRM timer: https://freshbsd.org/freebsd/src/commit/4767c42c1146459eb751...
It would appear GNU dd 9.9 still does a call for every block. Low-hanging fruit if anyone fancies it: