No, dd and cat both do pretty much the same system calls normally: read() followed by write().

Newer versions of dd have a "DIRECT_IO" flag, which gets rid of one memcpy (or possibly both) from the loop. That would be quicker on an empeg, but probably neutral on a PC.

With dd, one can also easily specify a very large buffer size, which will reduce the number of read/write calls, saving a tiny amount of overhead.

Cheers