You can get very close to Robocopy's speed with a simple C# program that does asynchronous reads and writes using a standard FileStream
with a 64K buffer. Larger buffer sizes up to 256K will give a slight performance increase. Larger than 256K will slow things down to a surprising extent. In my tests, using a 512K buffer took almost twice as long as copying with a 256K buffer.
The idea is pretty simple:
Read the first buffer from the source file
do
{
start asynchronous write to destination file.
Read the next buffer from the source file
wait for asynchronous write to complete
} while not end of file
It's a pretty simple thing to write. My program that does this is almost as fast as Robocopy and doesn't cause the kinds of problems that Robocopy causes when you're copying a very large (hundred gigabyte) file from a server.
A bit more info on the large file copy problem.
Note that this asynchronous read/write thing doesn't do much for performance if you're reading from and writing to the same physical disk. It's most effective when the source and destination are on different drives.