Requirements/Installation:
None. Just unpack the zip file.
You will probably also want to download the ATM tool from this page as well.
Background:
With Application Prefetch, the OS watches the files loaded by an application for the first 10 seconds after launch, and then creates a prefetch file in the Windows\Prefetch folder. This file will have a name that starts with (up to) the first 29 characters of the filename, and a calculated hash of the full path to the executable and a ".pf" file extension.
The next time this app is run, the prefetch file will be examined and the OS will start loading those files into memory, even before the application asks for them, speeding up the launch.
How much speedup? That is what this tool is to help answer.
Prepare for use:
You first need to create an text file with a list of dll files to be loaded, one on each line. Only the filename is needed, not the path. As long as those dlls are either in the current working directory, or in a folder that is in the PATH variable they will be located by the tool. A sample file, called “LoadDlls.ini” is included with the distribution. It contains the names of around 100 dlls that are commonly found in the Windows 7 SYSTEM32 folder.
Start the tool, enter the name of the file, and click the exit button. This will record the filename into the Windows Registry for subsequent launches.
Start the tool again, let the process remain active for at least 10 seconds, then shut it down. Do this a few more times for good measure, then check the Windows\Prefetch folder to see that the pre-fetch file is present.
Performing the Test:
Using the Windows Services Manager, stop the SuperFetch Process. This will prevent additional updates to the pre-fetch file, but more importantly SuperFetch will not automatically load commonly used files in the background into the Stand-by lists, which would interfere with getting consistent results in the tests that follow.
Download the TMurgent tool called "ATM". Start that tool as an Administrator. After you start the tool, Clear the caches by clicking on the "Flush Cache WS" button and also the "Flush All Standby" button. After clearing the caches, always wait about 5 seconds for normal system dll use to reload and the system stabilize.
Run LoadDlls, and note the time presented at the bottom of the tool. This time is the amount of time to load all of the dlls from the input file, using the application pre-fetch file. You may want to run this test (clearing the caches and then launching LoadDlls) several times and average the results.
Now delete or rename the PF LoadDlls-*.pf file from the Windows\Prefetch folder. Clear the caches (using ATM) and run LoadDlls again. Without the pre-fetch file, this launch should take longer, demonstrating the effect.
On a sample test system with 102 dlls being loaded, we witnessed the launch time change from 172ms to 407ms when the pre-fetch file was removed. That represents nearly a quarter of a second difference!
Download the zip file LoadDlls.zip (750kb).
Additional Performance Tools:
Additional tools for performance have a segregated list here.