by: Helge, published: Aug 5, 2015, updated: Jun 17, 2018, in

FileIOTest – Times the Duration of File IO Operations

FileIOTest is a command line tool that tests the speed of local or remote (SMB) storage by performing some common file IO operations repeatedly and measuring the duration.

These are the main facts:

  • Performs four different types of file IO: write, custom read, read with the GetPrivateProfileString API, create/delete
  • The number of iterations can be specified
  • Each generated file name is unique to prevent caching
  • Works with local and UNC paths
  • FileIOTest does not require any software to be installed
  • FileIOTest works on any version of Windows from Vista / Server 2008 onwards
  • FileIOTest is freeware

FileIOTest was developed to collect data for the 2015 talk on Windows folder redirection Aaron Parker, Shawn Bass and myself jointly presented.

When to Use

FileIOTest is useful for performance testing the real-world file performance of storage subsystems and protocols. With FileIOTest you can easily compare configurations by simply pointing FileIOTest at UNC paths that are hosted on different machines.

FileIOTest not only tests read and write operations but also deletes (which can be very slow with some anti-virus products) and the notorious Windows API function GetPrivateProfileString (which is used by countless applications).

Some ideas for performance tests and comparisons that might prove to be interesting:

  • SMB 1 vs. SMB 2 vs. SMB 3
  • NetApp filer vs. Windows file server
  • Comparing various anti-virus products
  • The effects of installing a DLP (data loss prevention) product


The program’s help screen describes the available options in detail:

FileIOTest by Helge Klein

Times the duration of file IO operations against a local or remote target

Copyright: Helge Klein


FileIOTest [-help] -target <UNC path> [-iterations <number>]

The default number of iterations is 1,000.
Each generated file name is unique.
Turn off antivirus unless you want to test AV performance.

Explanation of the tests:
Write with custom function:
   Creates the file and writes <iteration> lines opening and closing the handle for each line
   Calls the GetPrivateProfileString API to read <iteration> lines individually
Read with custom function:
   Opens the file once and reads <interation> lines individually
Create/delete loop:
   Creates the file, writes one line, deletes the file. This happens <iteration> times

FileIOTest finished successfully


FileIOTest is freeware.


Version 1.0.1

  • First released version

System Requirements

FileIOTest works on any version of Windows beginning with Vista / Server 2008. This includes Windows 7, 8, 8.1, 10 and Server 2012 (R2). FileIOTest does not require any additional software.

FileIOTest comes as a 32-bit binary only but works correctly on both 32-bit and 64-bit Windows.


Download FileIOTest here.

Previous Article Converting Mercurial Repositories to Git on Windows
Next Article Performance Footprint of PowerShell Logon Scripts