If using dd there's also the direct flag:
# time dd if=/dev/hda of=/dev/null bs=1048576 count=16
16777216 bytes (17 MB) copied, 0.299895 s, 55.9 MB/s
# time dd if=/dev/hda of=/dev/null bs=1048576 count=16
16777216 bytes (17 MB) copied, 0.023379 s, 718 MB/s
# time dd if=/dev/hda iflag=direct
When benchmarking programs on linux systems I find cache effects
dominate.
ie. On current systems the difference in speed between RAM and disk is
so vast... that 2 orders of magnitude differences in algorithms can be
swallowed entirely by whether the data is in a ram disk buffer or on
disk.
So