This is how I did it on an USB flash memory. The block size was found to be 8 kB, not 4 kB as many claim. Unfortunately, many programs have 4 kB as an upper limit.
So, how did I do it?
By dumping a copy of the flash back to the flash, with different blocksizes, and timing it.
First the flash was read, under Linux as root, like this:
time dd of=q if=/dev/sdb bs=8kThat also gives the memory's reading bandwidth, which is always faster than the writing bandwidth, since writing takes time.
time dd if=q of=/dev/sdb bs=8kThis example has a blocksize of 8 kB, and /dev/sdb is the USB flash on my machine.
The blocksize is obviously 8 kB, since this is the smallest blocksize that gives fast writing. Note that the speedup is about three, so a lot is gained by using this blocksize. Unfortunately, as I said before, many programs and devices have a 4 kB limit, taking about 2.5 times as long.
Other flash memories may have other block sizes and bandwidths.