Get it All

A rose by any other name would smell as sweet. And a web browser lacking basic web compliance by any other name would also smell.

With it’s release of Internet Explorer, Microsoft has once again heralded it’s intentions to make the Internet less than it could be. Not much has changed yet, despite Bill Gates’ departure.

I know it’s snarky and not constructive to say. But how long is Microsoft going to drag it’s feet on standards compliance for the web? IE8 is the first browser to be – by Microsoft’s estimation, at least – fully CSS2 compliant. That’s a nearly ten year old standard and most browsers are moving on to CSS3. Not that any of us can really use the CSS3 technology without going through backflips to support the perpetual legacy technology that is IE.

According to the IE8 home page, the big improvements in this new revision include a speed boost. Interesting, inasmuch as IE7 represented a huge step backward in performance. I call this a lateral move at best. They’re also touting IE’s ability to leverage RSS feeds. Here again, this is six or seven years old, nothing new.

Finally, Microsoft touts it’s security. Well, that’s just silly. Microsoft made the security gaps that made viruses so much a part of our lives and so far, their solutions have left much to be desired. Especially since their solutions to problems often involve more code, rather than fixed code; they paper over a security flaw with still more features, all of which necessarily have the potential to become security flaws themselves.

Internet Explorer and Microsoft Windows, generally, are regrettable facts of life for web developers. But in my private life, I’m more and more thankful to be running Ubuntu Linux, warts and all.

Even though Windows is designed around the idea that anything you would wish to change about the Registry should be available in GUI form, this is not always not the case. There are a number of performance tweaks to be found within the Registry for which there are no controls within the Operating System, and it is these performance tweaks that this post is dedicated. Once again, this is by no means a complete list, but rather a guide to some pretty-darned good ones.

A word for the uninitiated: if you’ve never played around with the Registry, this is probably not the tutorial with which to start. In some cases, I suspect that these tweaks have no GUI eqivalent primarily because if anything goes wrong with them, you can render your OS inoperable. Always backup your Registry before beginning, and you might even want to consider backing up any files you need, because there are things with Windows Operating Systems that you cannot take back.

OK, so enough of this wool-gathering. Let’s get to the meat of the article. Due to the repetitious nature of Registry hacks, I will be abbreviating the names of the top hives from (for example) HKEY_LOCAL_MACHINE to HKLM. Got it? Good, let’s get started:
Tweak #1: Shutdown Service Timeout

Ever notice how long Windows takes before it even starts to shut down? That is a setting in the Registry which you can hack. Open Regedit and navigate to: HKLM\System\CurrentControlSet\Control and look for the variable WaitToKillServiceTimeout. It is currently set to 20000, which is 20 seconds. Set it to 0 and see what happens.

Tweak #2: Menu Delays

When you hover over a scrolling menu such as the Start menu items, “All Programs,” the system actually waits a predetermined amount of time before automatically expanding that menu. I find this annoying, how ’bout you? Open Regedit and navigate to HKCU\Control Panel\Desktop and look for the varible named MenuShowDelay. You can set this value to whatever your preference may be.

Tweak #3: Auto-Kill Programs at Shutdown

Nothing worse than having to wait for all those programs to shut themselves down before you restart the PC. Why not let Windows just kill the damned things and be done? One word of caution, though: make sure you’re in the habit of saving documents regularly, or you won’t have a chance to do so if you’ve forgotten it and shut the system down!!!! Open Regedit and navigate to HKCU\Control Panel\Desktop and then toggle the AutoEndTasks varible value to 1.

Tweak #4: Disabling Memory Paging

In normal use, Windows XP creates a page file from RAM onto the HDD. We can disable that function within the Registry, but note that only those with very large quantities of memory (above 256, and really, above 512 to be safe) will want to even consider doing this. Navigate to HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management and toggle the DisablePagingExecutive variable from 0 to 1.

Tweak #5: Enabling Large System Cache

Enabling this setting pushes all but 4mb of system memory to the file system cache, which in other words means that the entire kernel is running in memory. Two caveats are associated with this tweak, the first being that (once again) only those with a significant amount of memory should even bother tryin this. Secondly, this consistutes a significant improvement in performance for the Operating System, but can actually degrade performance of memory-intensive applications. It’s probably best to make a decent benchmark of your most important applications first and then make the Reg switch and see if that makes your performance better or worse. Navigate to HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management and then toggle the LargeSystemCache variable from 0 to 1.

Tweak #6: Improving I/O File Transfer

This one is only really available for those of you running servers, but will improve performance for large file transfer operations. In fact, the variable is not even present by default, and this will require you to create the key in most instances. In the HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management hive, create a REG_DWORD value called IOPageLockLimit. On those systems for which this key is enabled by default, the default value is usually around 512k and is valued in bytes. Most people get improved performance in the 8 to 16mb range, you’ll have to play with the settings to see what works for you. Keep in mind that since this value is represented in bytes, you’ll need to do a bit of math to get to, say, 12mb. 12 * 1024 * 1024 = 12582912.

Tweak #7: Damn That File Sharing Wait!!!!

How many times have you smashed your head against the side of your cubicle waiting for the damned files on a network share to show up so you can work? Can you believe that this is intentional on Microsoft’s part? Indeed, the system checks the scheduled tasks on the remote computer before reading the directories, a task so useless, it’s breathtaking. This takes 30 seconds out of your day every single time you access a network share, and that adds up to constant annoyance as I’m sure I don’t need to tell a lot of you. Navigate to HKLM\Software\Microsoft\Windows\Current Version\Explorer\RemoteComputer\NameSpace and find a key called {D6277990-4C6A-11CF-8D87-00AA0060F5BF}. Just delete that mamma-jamma and after a restart, PRESTO! No wait time.

Whoopha!!  That’s a pretty good list for now, wouldn’t you say?  But it’s not the end, not by a long-shot, and in fact some of the best is yet to come, so stick around!

Quite some time ago, on another board I was working, a friend of mine laid out a pretty long list of Windows XP tweaks for performance. I loved them (in fact, I have used them every single time I’ve reloaded my OS) and now that I’ve moved on from that board I do not want to lose them. So, as my first real contribution to the blogosphere on this new blog of mine, I present a list of Windows Services that can potentially be disabled from running:

Computer Browser
Fast User Switching
Human Interface Access Devices
Indexing Service (Slows the hard drive down)
Net Logon (unnecessary unless networked on a Domain)
Netmeeting Remote Desktop Sharing (disabled for extra security)
Remote Desktop Help Session Manager (disabled for extra security)
Remote Procedure Call Locator
Remote Registry (disabled for extra security)
Routing & Remote Access (disabled for extra security)
SSDP Discovery Service (this is for the utterly pointless “Universal P’n’P”, & leaves TCP Port 5000 wide open)
Telnet (disabled for extra security)
Universal Plug and Play Device Host
Upload Manager
Windows Time
Wireless Zero Configuration (for wireless networks)

You will notice that many of these Services will already be disabled in WinXP SP2 and above, since as noted, they are security vulnerabilities.

How to Disable Windows Services:

  1. Go to “Start > (Settings) > Control Panel”
  2. Double-Click “Administrative Tools,” and then again on “Services” (NOTE: not “Component Services)
  3. Here you will find your list of Services in alphabetical order. Find the first Service you wish to disable and double-click it.
  4. Half-way down the window that opens is the Service’s status and startup type.
  5. If the status is “Running,” you will need to hit the “Stop” button and wait for the Service to be stopped before proceeding.
  6. Under the Startup Type drop-down menu, select “Disabled” to prevent this Service from starting when Windows starts.
  7. Click “Apply,” and then “OK,” and repeat steps 3 through 7 as necessary

Next up: Registry Hacks!!! Stay tuned!