What is Windows Prefetch and Superfetch?

Prefetch is a feature, introduced in Windows XP and still used in Windows 10, that stores specific data about the applications you run in order to help them start faster. Prefetch is an algorithm that helps anticipate cache misses (times when Windows requests data that isn’t stored in the disk cache), and stores that data on the hard disk for easy retrieval.

Superfetch is a feature that attempts to determine which applications you will launch and then loads up all the necessary files and data into memory. Both of these features require quite a few read and write operations in order to work.

This data is located in C:\Windows\Prefetch, and, as the theory goes, periodically clearing out the data in this folder (say, once a month) will improve performance.  Prefetch files are files with a “PF” extension inside the Prefetch directory:

As new applications are subsequently started, new prefetch data will be created, which may mean slightly reduced performance at first. However, with older entries gone, there will be less data to parse, and Windows should be able to locate the data it needs more quickly. Any performance gains you may see will be minor (if you see any at all), but those users wishing to squeeze every last CPU cycle out of their computers will want to try this one.

Note that deleting Prefetch data may increase boot time slightly, but only the next time you boot Windows. Each subsequent boot should proceed normally, since the prefetch data will already be present for the programs Windows loads when it boots.

The Prefetcher configuration is stored in the windows registry at the following location:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters.

The EnablePrefetcher value can set to be one of the following:

  • 0 = Disabled
  • 1 = Application launch prefetching enabled
  • 2 = Boot prefetching enabled
  • 3 = Applaunch and Boot enabled (Optimal and Default)

Should You Disable Prefetch and Superfetch?

It is a known myth to change the default value to anything other than 3 to speed up performance. If you notice a performance issue caused by an “optimizer” software that changed this registry value to something other than 3, change it back.

There is one exception to this rule and that is if you are using a SSD drive on your computer. If you have a traditional hard drive, make sure you keep prefetcher enabled with a value of 3. However, if you have an SSD drive, the benefits of the performance boost are lost because of unnecessary write operations. With solid state hard drives, the extra write operations will wear down the drive faster. Also, because SSDs are so fast, applications load just as fast without prefetch and superfetch.

To disable prefetch, just change that registry value to 0. To disable superfetch, you have to click on start and type in services.msc. Scroll down till you see Superfetch and double-click on it. By default, Windows 7/8/10 is supposed to disable prefetch and superfetch automatically if it detects a SSD drive, but this wasn’t the case on my Windows 10 PC.

If the Status is Running, then click the Stop button and then change the Startup type to Disabled. Again, you really only need to disable prefetch and superfetch for computers that have solid state hard drives. For regular platter hard drives, they can actually help increase performance over time. If you have any questions, feel free to comment. Enjoy!