This small freeware utility allows you to test the speed of memory copy and disk
transfer operations under Windows 95/98/ME and Windows NT/2000/XP/2003 server. This is a Win32 console
application. C Source included. There is a page for x64 MD5 (and SHA1) optimized assembly code
You may download readfile here:
(535 515 bytes). Contain both executable and souce.
(495 270 bytes). Contain both executable and souce.
(296 776 bytes). Contain both executable and souce.
(672 746 bytes). Contain more version of executable and souce.
There is also a page
with a 64 bits performance test with readfile.
||test memory copy speed
||test file reading (bypass cache)
|READFILE filespec /d
||test file reading + memory copy
|READFILE filespec /c
||test file reading + CRC32 computation
|READFILE filespec /s
||test file reading + recursive directory parsing
|READFILE filespec /l
||test file reading + listing output
|READFILE filespec /b
||enable file system buffering
|READFILE filespec /m
||use file mapped IO (incompatible with /t & /o)
|READFILE filespec /a
||calculate Adler code
|READFILE filespec /g
||calculate MD5 code, using MD5 source from OpenSSL
|READFILE filespec /sh
||calculate SHA1 code, using SHA1 source from OpenSSL
|READFILE filespec /t
||use small buffer (64 KB instead 1 MB)
|READFILE filespec /r
||perform slow CRC-32 computations
|READFILE filespec /o
||use overlapped I/O
|READFILE filespec /h
|READFILE filespec /gd
||compute MD5 code using MD5 source from L. Peter Deutsch (see
|READFILE filespec /c e#
||compute CRC32 using one of the source code, where # is :
1 : CRC32 code from zLib 1.14
3 : new optimized CRC32 code from zLib 1.21 (see http://www.zlib.net/
READFILE without parameters tests the speed of copying big blocks of memory (1
READFILE with filename parameters tests the speed of reading files. For example
C:\> READFILE.EXE *.ima
ReadFile 1.60 - http://www.winimage.com/readfile.htm
File= 3860 Kb/Sec with 1474560 bytes : Distwi25.ima
File= 4084 Kb/Sec with 1474560 bytes : DISTWI22.IMA
Average = 3850 Kb/Sec with 2949120 bytes (total : 765 msec)
The files are opened with the FILE_FLAG_NO_BUFFERING parameter, so the operating
system will not cache file reads.
I suggest that you test it on big (more than 1 MB), unfragmented files for
finding the real transfer speed of your hard disk (or network unit) during
Under Windows NT, it's VERY useful to start the performance monitor tool before
- Start PERFMON.EXE
- Add CPU in the chart
With Windows 95, you can use the WinTop Kernel Toy, downloadable from this URL:
With a modern SCSI BusMaster interface (for example, Adaptec 2940), you'll get
very small CPU usage while reading (10 % of CPU for 4 MB/Sec), whereas with a
normal IDE Interface, you'll have 100 % of CPU used by the disk operation!
The latest Pentium motherboard with the Intel triton chipset, a BusMaster IDE
driver, will also give you reduced CPU usage. The latest Bus Master IDE Triton
drivers can be found at: http://www.bmdrivers.com.
For Windows 4.0, see information
Microsoft site contain a information about DmaCheck (KB article
Q191774 with DmaCheck information, link to download
DmaCheck). For hard disk greather than 8 GB, see also article Q183654
and Q197667. If you have
not installer the Service Pack 4 (or greather) of Windows NT4, get updated
Atapi.sys (with both large disk and Dma support with DmaCheck) on the
atapi.exe link on Microsoft site.
But on somes computers, the DmaCheck cannot enable BusMaster DMA. If your
moterboard contain Intel chipset, you can try the Intel BusMaster driver 2.05
for Windows NT4 (nt205_00.exe).
The benchest.com site contain
a Windows NT 4 benchmark with and without busmaster enabled.
On Windows 2000 and Windows XP, you need only check the DMA parameter in the
Device Manager. (Device Manager -> IDE ATA/ATAPI controllers -> Primary
and Secondary Ide Channel -> Properties -> Advanced settings).
Note: Win95 OEMSR2 (the OEM only version of Windows 95 built in August 1996)
and Win 98 already contain a BusMaster IDE driver.
Another usage of ReadFile is to produce a file with a list of CRC codes (can be
useful for checking data integrity). You can go to your desired directory and
READFILE *.* /c /s /l > LISTCRC.TXT to produce the file with CRC codes
Multi-threading (under Win95 and WinNT) and Overlapped I/O (under WinNT) use
the advanced Win32 API for computing CRC (and/or Adler) values and reading the
disk at the same time. This is useful with a good SCSI adapter or a BusMaster
The slow CRC computation option, from /r2 (slow) to /r9 (very very slow) may be
useful. /r means /r3.
If you are interrested in benchmarking, also try AsBench.