Programs often use dependency files, like DLL's, which contain a bunch of functions the program can use. In order for the EXE to run properly (or in some cases, even at all) the required DLL's must be loaded into memory. The Prefetcher tracks what code pages are used by an application, and the next time that application loads, it loads those pages in advance as soon as it's got some idle time, instead of waiting for a hard fault to happen when the program needs to use the DLL.
This is not completely correct. The Prefetcher does track the first ten seconds of an application launch from a cold start of that application and then creates a Prefetch Trace file which includes a list of all the files that the application launched in those first ten seconds. Thus the second time you launch the same application from a cold start it will reference the Prefetch Trace File for that application and use the list to load all those files into memory asynchronously. By default an application would load these files in a much less optimal manner. It does not do this at system idle time. What it does do at system idle time is a second prefetch optimization: it uses the disk defragmenter to arrange all the files referenced in the prefetch trace files to the same location on the HD to further reduce disk seeks.
I don't personally use Page Filing (Virtual Memory) because I have enough RAM that I don't need to use my hard-drive (and take up space on it) for some extra Ram space.... consequently XP doesn't generate any prefetch files (I don't even have the prefetch folder). My point here is that prefetch has no effect (and in fact could SLOW DOWN) system performance on SOME machines. While most machines, (with default xp installations) will certainly gain speed from the prefetch, this isn't always the case.
Virtual Memory is always in use and you cannot disable it. Disabling the Page File is a bad idea and will slow down application performance in a multitasking environment. Windows will create one even if you set the page file to disabled only it will be ridiculously small and cause alot of unnecessary paging due to the limited size. Prefetching does improve performance, why do you think Windows XP boots so much faster than 2000? How much it improves performance is based on a number of factors including the speed of your HD, how much RAM is in your system, how many applications load at startup and how large the application is that you are loading. Anyone who claims otherwise has never properly tested it. If you do not have a Prefetch folder that means you have it disabled. You can reenable it with the Prefetch Fix located
here.
In no way whatsoever can Prefetching slow your system down on a properly functioning PC. Even on high end machines, prefetching will improve performance on large applications such as Adobe Photoshop and high end games but it will not reduce performance. Here is a simple test to irrefutably prove this:
Testing Boot Prefetching:
The following on a default installation of Windows will be done by Windows automatically at some point, however to confirm that the Prefetcher is enabled and Windows is optimized on a system where it might have been disabled these steps are necessary for uniformity in testing. You must be using a default install of Windows and not one that used Nlite which can permanently break the prefetcher
1. Make sure the following Services are set to Automatic:
-Task Scheduler (It is by default but many people and bad tweaking programs disable it)
-COM+ Event System
2. Make sure the following Registry Key is set to 3: (Again it is by default but many people and bad tweaking programs disable it)
Key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contro l\Session Manager\Memory Management\PrefetchParameters
Name: EnablePrefetcher
Type: REG_DWORD
Value: 3
3. Reboot and make sure in the \Windows\Prefetch folder the following files are present:
-NTOSBOOT-B00DFAAD.PF
-Layout.ini
4. Reboot Windows 3 more times and DO NOT install or change anything that would load during Windows Startup during any of this. This will insure that prefetching is 100% complete.
5. Download and install Bootvis. (Without using Bootvis you would have to wait 3 or more days for this optimization to happen automatically.)
6. In the menu go to "Trace", select "Next Boot and Driver Delays". A "Trace Repetitions" screen will appear, select "Ok" and Reboot. Upon reboot, BootVis will automatically start, analyze and log your system's boot process. When it's done, in the menu go to "Trace" and select "Optimize System" and Reboot. This time when your system comes up, wait until you see the "Optimizing System" box appear, continue to wait until the process is complete.
Now your Boot time is optimized and Prefetching should be properly enabled.
7. Time Windows boot with complete accuracy using Bootvis. Run another Trace and reboot. Now when Windows finishes loading the Bootvis tool you will see a time at the top of the Window that represent your optimized Boot time. Write this down.
8. Delete the contents of the \Windows\Prefetch folder. (This is never recommended except for these tests)
9. Time Windows boot again using Bootvis. Run another Trace and reboot. Now when Windows finishs loading the Bootvis tool you will see a time at the top of the Window that represent your unoptimized Boot time. Write this down.
10. Compare the times.
Anyone can easily test this themselves and see for themselves how important the Windows Prefetcher really is. Again you must be using a default non Nlite installation of Windows. Using programs like Nlite can permanently break the Windows Prefetcher.
Like I said I have personally talked to Microsoft Engineers on the Windows Client Performance Team about this and have tested it extensively. The final conclusion: Windows Prefetching is enabled by default, it is already configured optimally, it should not be disabled and the folder should not be cleaned (it is auto cleaning). Windows Prefetching only improves performance.
Don't get me wrong you can disable it and clean the folder if you want Windows to boot slower and your applications to load slower, be my guest.