Sunday, 24 March 2013

RMPrepUSB improves flash write speed on FAT32 volumes

As I have changed the FAT32 code slightly to cater for large (up to 2TB) drives, I wanted to check that the flash write speed improvements still work.
I used XCOPY to copy small files from an XP i386 folder to the flash drive.
I formatted it using either Windows or RMPrepUSB 2.1.662.

Results were:
File copy to Windows 7 FAT32 formatted volume:   784 seconds
File copy to RMPrepUSB FAT32 formatted volume: 695 seconds

for comparison: NTFS: 132 seconds!

This shows a 12% improvement in write speed to a USB Lexar flash drive formatted as FAT32 by RMPrepUSB, compared to the same drive formatted using Windows (results repeated twice and averaged)

I used this command to time the file copy to the flash drive.
timecmd xcopy "c:\sources\XP SP2\i386\a*.*" f:\ /herky

where timecmd.bat contained this code:

@echo off

set start=%time%

:: runs your command
cmd /c %*

set end=%time%
set options="tokens=1-4 delims=:."
for /f %options% %%a in ("%start%") do set start_h=%%a&set /a start_m=100%%b %% 100&set /a start_s=100%%c %% 100&set /a start_ms=100%%d %% 100
for /f %options% %%a in ("%end%") do set end_h=%%a&set /a end_m=100%%b %% 100&set /a end_s=100%%c %% 100&set /a end_ms=100%%d %% 100

set /a hours=%end_h%-%start_h%
set /a mins=%end_m%-%start_m%
set /a secs=%end_s%-%start_s%
set /a ms=%end_ms%-%start_ms%
if %hours% lss 0 set /a hours = 24%hours%
if %mins% lss 0 set /a hours = %hours% - 1 & set /a mins = 60%mins%
if %secs% lss 0 set /a mins = %mins% - 1 & set /a secs = 60%secs%
if %ms% lss 0 set /a secs = %secs% - 1 & set /a ms = 100%ms%
if 1%ms% lss 100 set ms=0%ms%

:: mission accomplished
set /a totalsecs = %hours%*3600 + %mins%*60 + %secs% 
echo command took %hours%:%mins%:%secs%.%ms% (%totalsecs%.%ms%s total)