Join GitHub today
GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.Sign up
A copy utility that is in all managed code using unbuffered IO and a hand rolled overlapped scheme to get the speed as close to C/C++
Fetching latest commit…
Cannot retrieve the latest commit at this time.
|Type||Name||Latest commit message||Commit time|
|Failed to load latest commit information.|
UBCopy is a file copy tool written in 100% managed code. What makes it different is its speed. While not as fast as a native application written in C or C++ it is very close. This was put together as a proof of concept initially to prove that you can get some performance from managed code and file I/O. Now includes the ability to do mult-threaded file copy with a configurable setting on what is a small file minimum small file size is 1 megabyte. UBCopy 188.8.131.52 File Copy Started File Copy Done File Size MB : 869.63 Elapsed Seconds : 1.306 Megabytes/sec : 698.22 Done. FastCopy 2.08 -- http://ipmsg.org/tools/fastcopy.html.en TotalRead = 869.6 MB TotalWrite = 869.6 MB TotalFiles = 1 (0) TotalTime= 1.12 sec TransRate= 774.38 MB/s FileRate = 0.89 files/s UBCopy 184.108.40.206 Single Thread doing the work on small files  - ElapsedSeconds : 10.089  - Files Per Second : 10.7047279214987  - Megabytes per Second: 3.68395417896202  - Number of Byes Copied : 38972858  - Elapsed Seconds : 10.141  - Done. UBCopy 220.127.116.11 Eight Threads doing the work on small files.  - ElapsedSeconds : 1.059  - Files Per Second : 101.983002832861  - Megabytes per Second: 35.0967079429158  - Number of Byes Copied : 38972858  - Elapsed Seconds : 1.105  - Done. This sample test copy was done on an HP DL380G7 with 96 15k SAS drives attached to two P411 Controllers and one Fusion-io Duo 640. The file was read from the Fusion-io card and written to the storage array. I tested on such a high end system to make sure I was working through all the potential bottlenecks in the code. You can also read about it in this blog post http://sqlserverio.com/2010/10/07/at-the-end-of-the-io-road-with-c-pave-new-road/ UBCopy 18.104.22.168 Usage: UBCopy [OPTIONS] Copy files using un-buffered IO and Overlapping buffers Options: -s, --sourcefile[=VALUE] The file you wish to copy -d, --destinationfile[=VALUE] The target file you wish to write -o, --overwritedestination[=VALUE] True if you want to overwrite the destination file if it exists -m, --movefile[=VALUE] True if you want to copy the file to new location and delete from the old location -c, --checksum[=VALUE] True if you want use MD5 hash to verify the destination file is the same as the source file -b, --buffersize[=VALUE] size in Megabytes, maximum of 32 -t, --threads[=VALUE] number of threads to use for small file copying -z, --filesize[=VALUE] smallest file size for threaded copy, in megabytes -r, --reportprogress[=VALUE] True give a visual indicator of the copy progress -?, -h, --help show this message and exit