Windows XP contains an interesting function, called Prefetch, capable of reducing applications startup time as well as the operative system boot time.
Prefetching works this way: the first time the user runs a given X application, Windows controls its startup and creates a X.pf file inside the Windows/Prefetch folder. This file contains a sort of index of the X application files to load into memory, as well as information about the order in which they should be loaded. That way, the next time the X application is started, Windows will check the previously created “index” and will use its information to grant a faster startup time.
In Windows Vista and Windows 7, the Prefetch function has been partnered with Superfetch: Vista uses a complex algorithm to determine which applications are used and their access frequency, in order to preload parts of them into memory at Windows startup or at a later moment (determined by the algorithm I was talking about). Since they are already partially loaded in memory, applications will startup faster than they did thanks to the traditional Prefetch.
Prefetch and Superfetch are theorically good functions. But pratically, things are a bit different. Prefetch does its work well, without any particular cons. Superfetch, instead, could lead to abnormal hard disk activity (caused by memory IO operations) and random in-game framerate drops (probably caused by the caching process). Fortunately Superfetch has been tamed down in Windows 7, but these problems are still present even on the new Microsoft platform. For these and/or other reasons, advanced users might want to tweak the way Windows manages Prefetch and Superfetch, and TweakPrefetch is a very easy way to accomplish this.
TweakPrefetch is a utility coded in VB.net capable of managing fetching in Windows XP, Vista and 7. It allows the user to set separate parameters for Prefetch and Superfetch. The available options are:
Disabled: completely disables fetching. “Superfetch” service is disabled.
Applications Only: fetching will only be applied to user started applications.
Boot Only: fetching will only be applied to boot files (system files, services and startup programs).
Applications & Boot: fetching will be applied to both applications and boot files (Windows default setting for Prefetch and Superfetch).
Moreover, “Clear Prefetch” function is included: it will empty the Prefetch folder, forcing the operative system to rebuild fetch data (or not to create them at all if Prefetch has been disabled). Note: emptying the Windows/Prefetch folder is not recommended and will cause a temporary performance drop in applications startup time. I added this function to allow advanced users to reset Prefetch data in case it might be necessary.
If you notice that Windows won’t rebuild the “Layout.ini” file after you have cleaned the Prefetch folder, or maybe you just want to update it to your latest startup configuration, you can force the process using the “Rebuild Layout.ini” function in the “Options” menu.
TweakPrefetch will also detect wrong parameters for Prefetch and Superfetch, and will let the user fix them with a single click.
Prefetching in Windows XP is better left at its default value for the 99% of the users. However, someone prefers to set it to “Boot Only”, in order to benefit from fetching only at boot time.
For what concerns Windows Vista and Windows 7, default settings are still recommended for most users (especially for who doesn’t use the PC for gaming). Advanced users and gamers might want to disable Superfetch (to obtain an XP-like fetching, reduce hard disk trashing and prevent this function to interfere with games) or set it to “Boot Only” at least. Obviously, it’s up to the users to experiment different settings and tweak fetching at their advantage.
Download: TweakPrefetch 220.127.116.11