I tried to copy partitions from a 500GB internal M.2 SSD to an external USB3.x enclosure around an M.2 2TB drive.
My first attempt used an A to C cable, and the command:
dd if=/dev/nvme01p3 of=/dev/sda1 bs=1M
took approximately 6.5 hours for a 240GB partition. It was reporting 10MB/s. This seemed really slow. It turned out that the port I was connecting on was probably USB2, so I used the short USB C to C cable, and got 40MB/s, and it took about 1.5 hours for a similar partition.
dd should be pretty low level, particularly if the files in question are partitions. Isn't that just raw block on the disk? So when in another question, some answers suggested I use copy partition in gparted. There were mistakes anyway, so I tried that, and was stunned when it achieved what I thought it should, which was more than 1GB/sec. 4 minutes later, the partition was redone.
The question is, how is it possible that dd can be 40x slower than gparted? If this question has to move to stackoverflow, I will do it, but it's in a gray area between software and linux.