To get started you need the Windows Performance Tools Kit. Sadly Microsoft removed the stand alone installer from download. To get the installer, you have to install the Windows 7 SDK.

Code:
https://www.microsoft.com/downloads/details.aspx?FamilyID=c17ba869-9671-4330-a63e-1fd44e0e2505&displaylang=en
Download the Web Installer and select the Win32 Development Tools and install them. Now go to the path:

CODE
Code:
C:\Program Files\Microsoft SDKs\Windows\v7.0\bin
and look for the 3 files wpt_ia64.msi, wpt_x64.msi and wpt_x86.msi. Now install the MSI which meets your Windows (IA64 if you're running an Itanium Windows, x64 if you run a 64Bit Windows Vista/7/Server 2008 (R2) or x86 if you run a 32Bit Vista/7/Server 2008).

To get a better boot performance make sure that EnablePrefetcher registry setting is not disabled and that the ReadyBoost service (under Vista) is running and set to start automatically.

Now open an elevated command prompt and run the following command:

CODE
Code:
xbootmgr -trace boot -prepSystem -verboseReadyBoot
Now your PC will be restarted 6 times. After the second reboot the MS defragmentation program is running and is placing the files into an optimized layout, so that Windows will boot up faster (for the description read what ReadyBoot is). The last Reboots are training of readyBoot. After the training is finished, you'll notice a huge improvement in startup.

Note! DON'T USE OTHER DEFRAGMENTATION PROGRAMS AFTER THE OPTIMIZATION, USE ONLY THE INCLUDED MS TOOL, BECAUSE EVERY TOOL PLACES THE FILES AT A DIFFERENT OFFSET ON YOUR HDD, BECAUSE ALL TOOL THINK THEY KNOW IT BETTER!

Background:

With Windows XP, MS implemented a prefetcher which loads data into the RAM, when the CPU was busy, starting services, drivers, so that they are already loaded when they are needed in later stages of the boot process.

With Vista, MS improved this prefetcher and named it ReadyBoot:

QUOTE
Windows Vista uses the same boot-time prefetching as Windows XP did if the system has less than 512MB of memory, but if the system has 700MB or more of RAM, it uses an in-RAM cache to optimize the boot process. The size of the cache depends on the total RAM available, but is large enough to create a reasonable cache and yet allow the system the memory it needs to boot smoothly.
After every boot, the ReadyBoost service (the same service that implements the ReadyBoost feature just described) uses idle CPU time to calculate a boot-time caching plan for the next boot. It analyzes file trace information from the five previous boots and identifies which files were accessed and where they are located on disk. It stores the processed traces in %SystemRoot%\Prefetch\Readyboot as .fx files and saves the caching plan under HKLM\System\CurrentControlSet\Services\Ecache\Parameters in REG_BINARY values named for internal disk volumes they refer to.
The cache is implemented by the same device driver that implements ReadyBoost caching (Ecache.sys), but the cache's population is guided by the ReadyBoost service as the system boots. While the boot cache is compressed like the ReadyBoost cache, another difference between ReadyBoost and ReadyBoot cache management is that while in ReadyBoot mode, other than the ReadyBoost service's updates, the cache doesn't change to reflect data that's read or written during the boot. The ReadyBoost service deletes the cache 90 seconds after the start of the boot, or if other memory demands warrant it, and records the cache's statistics in HKLM\System\CurrentControlSet\Services\Ecache\Parameters\ReadyBootStats, as shown in Figure 2. Microsoft performance tests show that ReadyBoot provides performance improvements of about 20 percent over the legacy Windows XP prefetcher.