pv, the pipe viewer. I just tested and it works on
/dev/sda directly, meaning you even get a deterministic progress bar.
Regarding the times:
I created a random file with
dd if=/dev/urandom of=random bs=4k count=10000. I then tried several methods of reading it:
$ time dd if=random | gzip >rand.gz
800000+0 records in
800000+0 records out
409600000 bytes (410 MB) copied, 17.9261 s, 22.8 MB/s
$ time pv random | gzip >rand.gz
391MB 0:00:17 [22.1MB/s] [==================================>] 100%
$ time <random gzip >rand.gz
I ran it again,
dd were even closer and lower than
<. I conclude that the performance of
dd are the same to within a very small margin of error.