Why Windows is Slow
hype7 writes "The New York Times is running an article on why they think Windows is so slow. They boil it down to one key factor - legacy support - and they hold up Apple as an example of a company willing to make hard decisions around legacy support in order to provide a better product. From the article: 'Windows is now so big and onerous because of the size of its code base, the size of its ecosystem and its insistence on compatibility with the legacy hardware and software, that it just slows everything down ... That's why a company like Apple has such an easier time of innovation.'"
I'd have had first post if windows wasn't so slow. :-(
Interestingly, I've found Apple to be very willing to integrate backwards and forwards support in their OS. In the transition from 680X0 to PPC, Apple made sure to include some very clever programming that allowed a native and non-native apps to co-exist. In the transition to OS X from Classic, they included Classic as a virtual environment and in the transition from PPC to Intel, they are working very hard on Rosetta, another environment that preserves people's investment in their software.
In contrast, I've had a fairly difficult time getting older software on Windows to even run sometimes. We kept a Win95 box around for the longest time because of some very specific software we needed that would not run on anything else.
Visit Jonesblog and say hello.
Windows Vista is coming out as a 're-write' of the code, but I don't believe they are recoding the real legacy parts of the Windows code. I think Microsoft needs to do away with native legacy support like Apple did, but keep it around with emulation. If WINE can reverse engineer the Windows layer, than why can't Microsoft, with access to the source?
--sig fault--
Ubuntu definitely ran more quickly for me than my XP machine. Not sure where you're getting that. In fact -- I've hardly ever seen an XP machine that runs 'great'. I remember when we upgraded our windows 98 machine -- it ran amazing 650 Mhz, 128 mb RAM -- I've never seen an XP machine run as quickly as that 98 machine of mine. (Not saying it can't happen -- it's just rare.) And christ -- have you seen most manufacturer basic loads? Dell, HP, Compaq, etc. machines are frequently nearly unusuable right out of the box, because of the garbage programs that come out of the box. In fact, currently my G4 Powerbook runs (1.5 Ghz) runs more quickly than my 2 Ghz Dell with windows XP.
well, try installting a year 2000 distribution on the stated hardware... works pretty fast doesn't it?
Boot time again, try to compare hybernation not boottime. http://www.suspend2.net/ for Linux...
I mean: apples and oranges anyone?
They don't mean execution speed. They mean the speed at which Microsoft makes new releases.
-Dave
If you ask me, though, that's the right design decision. First you make a system that works according the specifications, and only after that should you worry about optimizations.
Maybe this is why Vista is taking so long to come out. They are programming it in Windows.
But even stupider responses below illustrating just how many people don't read the article.
Fo those who simply refuse to RTA I will summarize, to wit: the article deals with the pace of Wiindows software releases and the recently announced delay of Vista... not the speed at which the OS loads and executes applications.
I am very small, utmostly microscopic.
Legacy support could include being able to run DOS, Win16, OS2 applications, switch to realmode to perform some BIOS functions should the need occur, etc.
l )
There's also code in place to check for old pieces of software which wouldn't otherwise work with newer versions of windows, eg:
I first heard about this from one of the developers of the hit game SimCity, who told me that there was a critical bug in his application: it used memory right after freeing it, a major no-no that happened to work OK on DOS but would not work under Windows where memory that is freed is likely to be snatched up by another running application right away. The testers on the Windows team were going through various popular applications, testing them to make sure they worked OK, but SimCity kept crashing. They reported this to the Windows developers, who disassembled SimCity, stepped through it in a debugger, found the bug, and added special code that checked if SimCity was running, and if it did, ran the memory allocator in a special mode in which you could still use memory after freeing it.
(taken from http://www.joelonsoftware.com/articles/APIWar.htm
These kinds of things are going to have an effect on performance, and an even greater effect on development time (windows, late again?)
The revolution will not be televised... but it will have a page on Wikipedia
First you make a system that works according the specifications, and only after that should you worry about optimizations.
That's easy to say in 2006, but 10-15 years ago the "footprint" of the OS was a huge purchasing decision.
Why do think Apple dumped so much money into Copeland? Because at that point in time, the average Mac had 8MB of RAM and they could never have shipped a Unix-based OS that required 64MB or so of memory.
Whenever I hear the word 'Innovation', I reach for my pistol.
I think a better solution would be a legacy-free OS that would have XP-level compatibility but would provide a VM layer configurable as DOS, NT4 or Win2k, depending on the need of the application.
If this isn't practical (having to run one each of the above layers could gobble tons of RAM), then at least providing a way to do a legacy-free installation with the option of adding support for older environments later. Systems that didn't need it wouldn't have to have it added, perhaps improving performance.
Here's What You Need to Use Windows XP Professional
PC with 300 megahertz or higher processor clock speed recommended; 233 MHz minimum required (single or dual processor system);* Intel Pentium/Celeron family, or AMD K6/Athlon/Duron family, or compatible processor recommended
128 megabytes (MB) of RAM or higher recommended (64 MB minimum supported; may limit performance and some features)
1.5 gigabytes (GB) of available hard disk space
Mac OS X Version 10.4 requires a Macintosh with:
PowerPC G3, G4, or G5 processor
At least 256MB of physical RAM
At least 3.0 GB of available space on your hard drive; 4GB of disk space if you install XCode 2 developer tools
While we're comparing apples to oranges, I've got a few for you too.
BTW XP was releases Oct. 2001? and Mac OS X Tiger (10.4.0) was released just last year? That's like 4 years. You've GOT to be kidding me? Have you seen what's changed in 4 years? Or are you still living in a shack somewhere with your 233Mhz Windoze box?
Here are the requirements for slackware 3.4:
3.4 (Kernel 2.0.33)
* Intel 8086
* RAM - 8 MB
* Minumum Drive Space: 40 MB
Man, your windows is so complex cuz it requires at least a Pentium.
Here's the kicker, if you actually READ the article, it's not even focused on the running speed of windows compared to everything else. It's saying because of all the legacy support, that adding any features requires so much work and testing to make sure it doesn't break anything else for the last 20 years of windows programs. And because of this it's "slow" in terms of being able to add features or to innovate.
If you want a real comparison, why don't you take the requirements for Vista which isn't even out, but might have some of the features Mac OS X already! And guess what the requirements for Vista is going to be?
AirSpeak - http://itunes.com/apps/AirSpeak
...depended on OS9? Lets be serious for a second. While I'm sure it's a painful process nonetheless, you can't really compare Apple forcing Adobe/Macromedia and a handful of other software makers to rewrite their packages to OSX' new API, to Microsoft forcing, say, the DOJ or Siebel to rewrite their software deployments. A Microsoft deprecated API could easily cost hundreds of billions of dollars. So for Vista MS is tasked with reviewing and security testing the heck out of whatever legacy components they cannot remove. And they do often take out legacy functionality that couldn't possibly fit our security model. But the major stuff, for the most part, has to stay in some form or another.
That said, I do wish more were done with virtualization to clean out the main OS.
What I've never understood is why a company as large as Microsoft never tried to create a second operating systems team with the goal of having it produce a new operating system from a clean slate? The original Windows team could still remain active for the short term and produce the types of updates that they have been in order to at least keep some reveneu from operating systems. This way the second team can work as long as they need until they have a good product. Even if the second operating system is a complete failure, which I don't see happening at a company with so many smart engineers, they would still be able to salvage at least some of the technology for use in the currect Windows code base. Microsoft spends a lot of money on R&D, so it doesn't seem completely far fetched that they would consider an approach like this. I know they have produced operating systems purely for research in the past (called Singularity, I think?), but why not create a second team to come up with something new, something that can avoid all the problems they've learned about developing Windows? The NT codebase won't last forever (at least I hope not), so I find it odd that Microsoft hasn't at least tried to start fresh again. I can't see NT lasting much beyond Vista and in a lot of ways I think it was a mistake to build Vista on top of NT. There has to be some point to break backward compatibilty and now is as good as a time as any. With ownership of VirtualPC, it wouldn't be hard for MS to run previous versions of Windows along side whatever new system they built, much like Apple did with OS X and OS 9.
SIGFAULT
The NYT titled the article "Why Windows is Slow" - it should have been titled "Why Microsoft is Slow". The article talks about the slow delivery of new versions of Windows relative to Apple deliveries of Darwin. It's got nothing to do with the performance of Windows itself.
Wonderful! Now taks a Windows XP disc with any service pack slipstreamed that you may want, reinstall the operating system on that laptop, and tell us how many of the special features still work.
I am not against Microsoft, and I make quite a bit of money developing software for their operating system, but I have found that more stuff works out of the box on my systems with various linux distros than what works with a vanilla install of Windows.
Despite the fact that this article has little to nothing to do with the "slowness" of Windows loading/execution (which is, of course, debatable depending on the app in question), I'll indulge the M$ haters and throw this into the mix.
If you want faster Windows, use nLite. It's a beautiful tool that lets one take a Windows XP installation CD and make any number of modifications to it: remove unwanted components/drivers, preset Windows settings, slipstream hotfixes and service packs...even completely automate the installation process by presetting all installation information (license key, etc.). Then, it generates a brand spanking new ISO for you to burn and use for installation. It's glorious.
After nLite-ing my personal XP installation, I must say I have never been happier with Windows. I've left it running for weeks with no problems. A fresh installation of my nLited XP is just over 1 GB of HDD space (whereas the typical XP installation can top 3 GB). It could have been less, but not without removing several components that I wanted to keep.
Granted, this tweaking is not without its quirks. I do occasionally get a warning about "unrecognized file versions", but thus far ignoring them has not caused any problems. I would suggest the following though: I know it's tempting to remove IE right off the bat, but trust me when I say don't. It is needed for some very important functions (such as updates). Also, I would caution against removing Windows Media Player as well. Sure, you may never use it (hell, I never did), but if you remove it, it takes its codecs with it, which can cause other apps to not function properly (such as Winamp). I guess you never know what you have until it's gone. If you're bound and determined to remove it, then I highly recommend the ACE Mega Codecs Pack as a replacement.
Happy hacking!
"You will pay for your lack of vision..." - Emperor Palpatine to Ray Charles
Definitely don' delete IE :-)
Windows XP Embedded lets you do a thing similar to what you are describing - you can create an image only with the components you select and the tool keeps track of component dependancies so it prevents you from creating a broken image by requiring the missing dependancies.
This is where the fun starts. There are dependancies you wouldn't imagine. I wanted to create a very minimalistic XP image with basic API functionality and TCP/IP networking. Impossible. The DHCP component requires the SNMP component, which requires the HTML Help component, which requires, yes you guessed it, Internet Explorer !!!! DHCP client -> Internet Explorer : it makes perfect sense.
Then I foolishly wanted to add SP2's firweall support. The firewall required all kinds of COM and DCOM components, including Microsoft Transaction Server (!!!) or similar crap and of course Internet Explorer as well. Why, oh, why, does a network firewall require Microsoft Transaction Server ?
Of course these dependancies are not always critical - I am sure I could have deleted IE from the image and DHCP would still have worked - but nevertheless it is funny that MS claims IE is not a part of the OS, while it must be present in the simplest OS image :-)
Getting back to the subject - I definitely wouldn't use a tool like nLite - you end up with an unsupported custom version of Windows and you never know what is going to break, which service pack or update is not going to install, etc. It is not worth the hassle.
I can grab the statically linked binaries off of my Simtel CD set that includes Slackware 2.x and run them. The old statically linked a.out files will run if I put that executable support in, and any statically linked ELF binaries also load fine. Both of those existed 10 years ago (right around when most people had switched to ELF).
Dynamically linked ones can work, too, provided I install the libraries that support them (and I can install them concurrently with modern libraries, since their names include the versions of their interfaces). Only libraries and programs that directly use the Linux system call interface (not the POSIX interface) are unlikely to work.
Quake binaries of that era function. The OpenGL 1.x interface they use is provided via my OpenGL libraries. OSS is emulated by Alsa. I can use fancy new binaries given by the Quake source code, if I want, but it's not required.
In fact, the best part about Linux you could say, is that I am not locked to archaic binary interfaces because most of my code is available in source form to everyone, including people who are willing to recompile it for me and provide it in a nice distribution (Kuuntu) with minimal interaction on my part.
So we can support legacy, but we choose not to. This choice is important in software use freedom.
--
Internet Explorer (n): Another bug -- that is, a feature that can't be turned off -- in Windows.