This guide is for Windows 10, but much will apply to earlier/later Windows versions. First, some general points: ● Remember to back up files. It may also be worth storing file hashes for files in a text file. (Hashes are a summary of a file, if 2 files have different file hashes, they have different contents, if 2 files have the same hash and file size they may be the same.) This is useful to confirm that the file copy has stayed exactly the same. ● Anything listed here has been tested by me, and tested on Windows 10, unless it states otherwise. ● Anything that you do with your PC is at your own risk. ● If you change system or program settings, it is good to record this in a text file, so that they can be reverted later if necessary. If told that a PC is often or sometimes slow, a quick checklist: ● The disk 'active time' is at 100%. I.e. the disk was being constantly read to/written to, within the last minute or so. ● Memory (RAM) near 100% usage. E.g. too many programs open, e.g. bloated web browsers such as Firefox/Chrome, e.g. PC manufacturer bloatware, e.g. hordes of background tasks. If memory use reaches 100%, hard disk space may be temporarily used as memory. ● An installer is running. E.g. Windows Update. ● A program has gone rogue, consuming too much memory. E.g. dwm.exe. ● Low free disk space. E.g. less than 20GB. When a drive becomes full, to store a file on disk, it may have to be split into multiple parts and stored in multiple locations. So file reading/writing files becomes slower. I.e. fragmentation. First we will consider how to measure the problem. Then we will list various techniques for solving the problem.
Measurement is half the battle. The following values available from the Windows Task Manager 'Performance' tab, typically correlate with whether a PC is slow or not: ● Disk 0 (C:): at 100%. The disk 'active time'. ● Memory: at 90% or higher. ● CPU: at 100%. Other values: ● The memory (active private working set) and commit size columns for individual processes. [See Task Manager. 'Details' tab.] ● Disk Space (C:): 20GB or lower. [See 'This PC' ('My Computer') for drive information.] ● The time it takes for a process to obtain Win32_PerfFormattedData_PerfDisk_PhysicalDisk values. E.g. over 10 seconds. [E.g. use an AutoHotkey script.] ● Which exes are running. E.g. installers: wuauclt.exe (Windows Update), TrustedInstaller.exe. [See Task Manager. 'Details' tab.] ● Diagnostic information regarding the physical state of a PC's hardware. E.g. temperature. To open Task Manager: right-click the taskbar, click Task Manager To open Task Manager (alternative): press Ctrl+Shift+Esc To view the commit size column in Task Manager: click the Details tab [note: the Commit size column is not shown on Task Manager by default] right-click a column header (e.g. right-click Name) click Select columns if Commit size is unticked, click the Commit size checkbox to tick it click OK To open This PC: press Win+R [Run dialog] type c: press Enter press Alt+Up To open This PC (alternative): press Win+R [Run dialog] type explorer , [note: the space between 'explorer' and ','] press Enter
An issue effecting thousands/millions of people ... On Windows 10/11 PCs, dwm.exe commonly consumes more and more memory (gigabytes), making the system slower and slower. See more details here: DWM Memory Consumption Workarounds - Bazzle In short, you can monitor the process, and restart it if necessary. Worst-case scenario, the computer becomes unusable, the screen goes black, and as the PC runs out of memory, it starts consuming as much as 10+ gigabytes of free disk space as temporary memory. In Windows 10, dwm.exe can be closed via Task Manager, it later reopens by itself. [Details tab, right-click dwm.exe, End task, End process.] In Windows 11, untested by me: dwm.exe can be restarted by going to the 'Services' tab in Task Manager, right-clicking Desktop Window Manager Session Manager, and choosing 'Restart'.
It is possible that the commit size for explorer.exe could grow to multiple gigabytes. In Windows 10, explorer.exe can be closed via Task Manager, it can be reopened via Task Manager by doing 'File, Run new task' and typing 'explorer'. [Details tab, right-click explorer.exe, End task, End process.] It's possible that various measures listed on this page, e.g. fixing SRUDB.dat, e.g. resolving event errors, e.g. running 'Analyze/Optimize', result in a better-behaved less-memory-hungry explorer.exe.
There are various services/apps/tasks that the user can disable. You should only disable such items if you know that it is safe to do so. Disabling certain services/apps/tasks may improve performance. Services [Win+R (Run dialog), type: services.msc] Disable one or more services (if safe to do so). E.g. SysMain (formerly known as Superfetch) [the idea of prefetch/superfetch is to anticipate programs that the user will use, for better performance] Some other candidates I've seen mentioned (untested by me): Connected Device Platform Service Connected User Experiences and Telemetry Windows Search Settings [Win+R (Run dialog), ms-settings:privacy-backgroundapps] [also: Win+I (Settings), Privacy, Background apps (on sidebar on left, near the bottom, scroll down)] Disable one or more apps (if safe to do so). Settings [Win+R (Run dialog), ms-settings:privacy] [also: Win+I (Settings), Privacy] Various options. Task Manager [Ctrl+Shift+Esc, Startup tab] Disable one or more tasks (if safe to do so). Task information can also be found via: Tasks [Win+R (Run dialog), type: C:\Windows\Tasks] Task Scheduler [Win+R (Run dialog), type: taskschd.msc] Shortcuts (lnk files) in these folders launch programs at start-up: [note: 'username' is an environment variable, %username% will 'expand' to your username, you don't need to manually type in your username] Startup/StartUp [Win+R (Run dialog), paste in a folder path] C:\Users\%username%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
When a hard drive becomes almost full, to store a file on it, the file may have to be split into multiple parts and stored in multiple locations. So file reading/writing becomes slower. I.e. fragmentation. If memory use reaches 100%, hard disk space may be temporarily used as memory. If the disk runs out of space, the PC may have to restart. The fragmentation issue applies to this temporary memory also. Disk space may be needed for programs to update. I.e. more space is needed to store new features. I.e. more space is needed temporarily as updating occurs. So, less disk space can result in fragmented files, and thus more disk read/write activity. Freeing space, and defragmenting files, covered below, can improve PC performance. Author's note: I have found 'Disk 0 (C:)' usage at 100%, 'active time', to be the most consistent indicator of slow speed on a PC.
Defragmentation reorganises how data is stored on a hard drive. E.g. files that were stored in multiple fragments, become stored as single contiguous blocks of data. Larger contiguous areas of free space are made available, making it easier to store future files as contiguous blocks of data. If a file is stored as multiple blocks, the head of a hard drive has to move around to multiple locations to read a file. In older versions of Windows, defragmentation had to be started manually, although in Windows 10, this is typically done automatically. For some software, 15% free disk space was required to perform defragmentation. E.g. that would be 150GB on a 1TB HDD drive. (Note: SSD drives work differently from HDD drives, so don't need defragmentation in the same way.) (Note: defragging may release some additional free gigabytes of hard disk space.) It may be beneficial, even on Windows 10, to manually start a defragmentation process. It is advisable to back up a drive before defragging it. This PC [Win+R (Run dialog), type: explorer , [note: the space between 'explorer' and ',']] This PC, right-click C: (or your drive of choice), Properties, Tools, Optimize, Analyze/Optimize
Problems with SRUDB.dat appear to be a common error. E.g. in Event Viewer, Event 447. Anecdotally this file: C:\Windows\System32\sru\SRUDB.dat Is typically around or below 200MB in size. At present on my PC it's at 33MB. At one point it ballooned to over 2GB (2016 MB). And various errors were being logged on Event Viewer. I fixed this by doing the following (use at your own risk): Services [Win+R (Run dialog), type: services.msc] right-click Diagnostic Policy Service, Stop open C:\Windows\System32\sru send all of the files to the Recycle Bin in Services: right-click Diagnostic Policy Service, Start
Event logs may point to problems with the PC, providing information that can be searched for online. Event Viewer [Win+R (Run dialog), type: eventvwr.msc] Although, I find NirSoft FullEventLogView (and for older OSes, NirSoft MyEventViewer), more practical to use: Alt+S [Stop] [stop the search] F9 [Options, Advanced Options] [set the search criteria] Enter [OK] [start the search]
If a Windows Update is running, this could slow down your machine. (Possibly the problem is more due to increased disk 'active time', than increased memory use.) Anyhow, 2 possibilities are: ● Check for an update now, so updates can occur now, at an idle time, and not later, when you're very busy. ● Delay an update, avoiding a time when you will be very busy. Windows Update has some useful options: Windows Updates [Win+R (Run dialog), type: ms-settings:windowsupdate] 'Check for updates': to update now. 'Advanced options': to pause updates for up to 35 days. [Win+R, ms-settings:windowsupdate-options] 'Change active hours': to specify 'work hours' when an *automatic restart* *doesn't* occur. Note this does not set when *updates* occur.
Firefox/Chrome/Edge have internal task managers that can be accessed via Shift+Esc. Having too many tabs open can decrease performance. An alternative is to grab a list of titles/URLs, to store them in a text file and return to them later. Two extensions, mentioned in this article: Web Browser Shortcut Keys and Tips - Bazzle. (Firefox extension): e.g. Export Tabs URLs. E.g. with 'custom format' option: '{title}\r\n{url}\r\n\r\n'. (Chrome extension): e.g. TabCopy. Having too many web browser extensions installed can decrease performance. Disabling/uninstalling some extensions can improve performance. Changing Chrome options for performance can cause problems. The options frequently change, with useful historic options being no longer available. WARNING: Changing some Chrome options can result in a bug where unused tabs are refreshed unexpectedly. Thus, if you change any Chrome options, document which ones you changed carefully in a text file. Two links regarding settings: chrome://flags chrome://settings See 'Improve Process Performance' for further ideas.
Increasing a process's priority can improve process performance. E.g. Task Manager (Ctrl+Shift+Esc): Details tab, Right-click a process, Set priority, e.g. 'Above normal' Processes can suffer from various problems: ● Bad handling for special characters. E.g. ini files/Excel logs and handling square brackets. ● Bad handling for long filenames. ● Bad handling for folders with many files/folders. (Note: transferring one 100MB file, is faster than 100 1MB files, a benefit of using archive files. The SQLite documentation mentions how doing things within one file is faster than using the file system.) ● Huge databases/logs/settings files that never get cleared. ● Corrupted databases/files. ● A task that is constantly failing, with retry attempts also failing. E.g. file permission not granted. E.g. file not found. E.g. broken lnk file. ● Slow Open/Save As dialogs. Clicking 'Hide Folders' in the bottom-left corner may improve performance. Right-clicking the file area and changing display settings/column settings may improve performance. E.g. reduce the number of columns of shown, e.g. don't show columns that take time to populate.
Software is very badly designed these days. With Windows, the PC manufacturer's bloatware, (hundreds(?) of) background tasks, a virus checker, and one tab on Firefox or Chrome open, that's almost 90% of memory in use for 8GB of RAM. It's for that reason that optimising any processes or scripts that you write, for reduced memory usage, can be worth considering. Some tips to minimise the memory (active private working set) and commit size for each AutoHotkey script I write: ● Use ListVars to check for any large strings, and make sure they are cleared after use. ● Instead of using a UTF-16 map/dictionary that stores UTF-16 keys and values, you can replace the values with pointers to one binary buffer containing null-separated UTF-8 strings, and use StrGet to convert a UTF-8 string to UTF-16 on-the-fly. ● Replace multiple small scripts with multiple functions, that are called via a loop. ● Instead of running your script, run a copy of your script with tree-shaking applied, e.g. a version with any unused functions removed. Note: this requires some advanced script parsing. Some further performance tips: ● Instead of using dozens/hundreds of small files, consider storing such items in a dll file. ● I tweaked some AHK code, that uses WMI with ExecQuery, to prevent event logs being clogged with this error: WMI-Activity Event 5858 ResultCode 0x80041032 - Windows Client | Microsoft Learn. ● When doing file searches, the first search can be slow, but searches immediately/shortly after are almost instant.
Increasing the RAM, would increase the memory available, to avoid running out of memory, and using hard disk space as temporary memory. Using an SSD drive instead of an HDD drive may increase reading speeds. Author's note: I have not replaced my HDD with an SSD. I found that after doing various improvements, listed here (on this page), that my PC is quite fast!
'Adjust for best performance': System Properties [Win+R (Run dialog), type: control sysdm.cpl,,3] [also: This PC, right-click, Properties, Advanced system settings.] Under Performance, click Settings... Click 'Adjust for best performance' to untick all Then tick these 3 settings: 'Show shadows under windows' 'Show thumbnails instead of icons' 'Smooth edges of screen fonts' (Untested by me): Set power options to 'High performance': Power Options [Win+R (Run dialog), type: control /name Microsoft.PowerOptions] [note: path: Control Panel\All Control Panel Items\Power Options] choose High performance Disable 'fast startup': System Settings [Win+R (Run dialog), type: control /name Microsoft.PowerOptions /page pageGlobalSettings] [note: path: Control Panel\All Control Panel Items\Power Options\System Settings] untick Turn on fast startup Other ideas: ● Reset the PC. Reset is more effective than shutdown. ● Close and reopen a process. ● Check for malware. Further ideas (not necessarily recommended): ● Temporarily turn off the virus checker. ● Tidy (parts of) the registry. ● Format the hard drive. Backup the hard drive first. ● Reinstall Windows. Backup the hard drive first. ● Reinstall Windows onto an SSD drive, instead of an HDD drive. Backup the hard drive first. A specific problem for some PCs, disable MSI mode for your Advanced Host Controller Interface (AHCI): Device Manager [Win+R (Run dialog), type: devmgmt.msc] If Device Manager has: 'IDE ATA/ATAPI controllers', 'Standard SATA AHCI Controller' Then there is a registry fix to disable MSI mode (untested by me: Device Manager IDE ATA/ATAPI controllers Standard SATA AHCI Controller (Driver tab) (Driver Details) Details tab Property Device instance path Copy RegEdit HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\PCI\your device\Device Parameters\Interrupt Management set MSISupported value to 0 (disables MSI support)
Some Windows built-in utilities (msc files): Services [Win+R (Run dialog), type: services.msc] Task Scheduler [Win+R (Run dialog), type: taskschd.msc] Event Viewer [Win+R (Run dialog), type: eventvwr.msc] Device Manager [Win+R (Run dialog), type: devmgmt.msc] Disk Management [Win+R (Run dialog), type: diskmgmt.msc] Computer Management [Win+R (Run dialog), type: compmgmt.msc] Performance Monitor [Win+R (Run dialog), type: perfmon.msc] Some Windows built-in utilities (not msc files): Analyze/Optimize [This PC, right-click C: (or your drive of choice), Properties, Tools, Optimize, Analyze/Optimize] Task Manager [Ctrl+Shift+Esc] Performance Monitor [Win+R (Run dialog), type: perfmon] Resource Monitor [Win+R (Run dialog), type: resmon] [also: Task Manager, Performance tab, at the bottom: Open Resource Monitor] chkdsk [Check Disk] sfc /scannow [System File Checker] dism [Deployment Image Servicing and Management (DISM)] wmic [Windows Management Instrumentation Command-line (WMIC)] Some third-party utilities I've seen recommended (some I haven't tested): CrystalDiskInfo GSmartControl [a SMART tool (Self-Monitoring, Analysis and Reporting Technology)] Malwarebytes NirSoft FullEventLogView [and for older OSes: NirSoft FullEventLogView] Process Explorer SeaTools [by Seagate, works on all hardware, not just Seagate hardware] System Informer [successor to Process Hacker] [written: 2025-03-03] [updated: 2025-03-04]