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.'"
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.
firstly i think the same could be said of pc hardware - we are still limited to the pc architecture designed decades ago, noone is willing to go out on a limb and produce truly flexible hardware given that it simply won't work with anything else. This is partly the reason why games consoles can put out much more power than an equivilent pc - they can be designed from ground up to be super-efficient without any legacy concerns at all (obviously the fact their hardware never varies makes it easier to code things more close to the steel)
secondly, i wonder whether it's not microsoft being obsessed with legacy support, more that they don't want to spend $$$ on getting windows developers to root through the code and take it out. They simply carry legacy support through windows versions as they're always working from the same base. As always with ms it's $$$ >> quality. I'm sure a lot of their coders get irritated with legacy issues..
The article made much of how many million lines of code are in XP and how many will be in Vista. At one point the authors state that OS X has roughly as many lines of code as XP, but the programmers made better choices and didn't have to support legacy hardware, so OS X is a better operating system. Does anyone have authoritative information on how many lines of code are in XP, OS X, and some Linux distro respectively?
Firstly, windows is not that slow... OS X takes longer to boot on my MacBook Pro than XP does... Quake3 UB runs slower on my MacBook Pro than on my old DELL notebook. When it comes down to it, the more eye-candy, the slower the machine... that's a trade I'm wikking to make with CPU cycles to burn...
:)
Secondly, legacy support is a sign of success. MS's Office 2004 on Mac is quite a nice program, mostly because they don't have much government users and thus little legacy support. MS's products need to be stable as MS cater for a huge amount of relatively computer illeterate users who cannot handle change.
The difference is that lately most OS X binaries are going to get more and more bloated with the UB support being added. So soon you will see a new type of problem on OS X... until then, sure things are just peachy.
As long as we're comparing windows to linux, lets do it properly. Windows 2000 looks and has the functionality of Sawfish or equivalents. Even XP is the same functionality, mind you it looks a little smoother. Comparing Win2k/xp to Gnome or even worse, to KDE is your first mistake. Also when you install windows, you get windows, it shouldn't take up that much space at all. If you install just Linux, with X, Sawfish, an editor, GAIM, a Calculator, then you basically get what you get when you install windows. Default install of most linux distros include about 100 programs, which is nice, but shouldn't be used when comparing windows and linux install size. As far as hibernation goes, Linux doesn't have to be rebooted, and can stay running for days. I use XP at work, and I shut down every night. If I don't then I know i'll run into bugs like everyone else at work that refuses to shut down their machine, After 3 or 4 days, weird things always start happening.
Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
The security holes, malware, Registry, etc. can all be attributed to people trying to do a good job and failing. I don't think Windows intentionally left numerous security holes in their systems -- why would any company want that kind of negative PR? The registry probably sounded like a really good idea, and in theory it isn't that bad. The problem is nobody realized that programs would be too lazy to properly clean up after themselves and it would bloat and become cumbersome. And the malware -- that one I attribute to Windows simply being a humongous target. If you're gonna target naive, uninformed users who had to practice to learn how to double-click, you'll attack Windows. I doubt many people who still can't handle the concept of e-mail have Gentoo on their box.
Even the legacy support is Microsoft trying to help people out. They don't want customers to lose their old applications. Of course, you could also attribute this to them being afraid to lose customers, but at the time of the 98->NT switch, Apple still wasn't even a blip on the radar. Neither was Linux. Backwards compatibility was, in all likelihood, what they thought their customers wanted.
The old new thing, describes some of the hacks win32 uses to stay compatible with badly written applications. Things like dummy events, hidden windows, duplicate event stacks, etc.
I think that must be some kind of confirmation of Brooks' Law. Somehow.
Patrick Doyle
I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
Well it pretty much already is, they're called 'subsystems'... one for Win16 support, one for OS/2 support etc. But it's not so much emulation, as providing different API's through different libraries, loaded and shared when they're needed... just as WINE is (as we know, Wine Is Not an Emulator).
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.
Windows PCs are plagued with viruses.
The office has converted to using Firefox, and OpenOffice is climbing up the side of the desk, but the operating system is still Windows and the viruses they picked up before moving to Firefox are still there.
The Anti-virus software is often disabled by a virus, and Internet Explorer can't be fully removed. It can't even be fully disable since it's needed by Windows Update. (Although Windows Update is blocked by viruses on half of the computer).
I'm seen as "the tech" because I fit the profile, but I'm actually more of a lobbyist, but I still get asked for tech support.
Please help publicise swpat.org - the software patents wiki
You have a modern system running Linux that can run a binary that was compiled 10 years ago? That's honestly pretty hard to believe. Can you give an example? And I mean a ten-year-old binary, not source code that's ten years old and will compile and run today. I suppose it's possible if we're talking about "Hello, world", but otherwise, I would imagine that every single library that any given program depends on has changed considerably.
Karma: Terrifying (mostly affected by atrocities you've committed)
I agree completely...
I'm currently running XP MCE on my desktop and it's currently displaying an uptime of 32 days, and I know that the last time I shut it down was because I was installing a new capture card. It's not uncommon for me to go a whole month without shutting down.
I've been very pleased with more recent releases of XP (SP2 and MCE 2005). My Win98 machine was NEVER this stable. I keep my software down to a bare minimum, the only apps on the machine are the ones I actually need an use. Keep your Antivirus, mal/spyware, and windows updates on an automatic update and sweep schedule. Don't open any emails from people you don't know and don't browse around websites that could potentially mess up your stuff.
It's pretty simple, the key in all of this is keeping the GF off my desktop less she'll go clicking links from her friend's live journals and downloading every flash game in sight. I keep a T20 Thinkpad around with WinXP SP2 I've got a hard drive image taken directly after a clean install every 6 months I format it and re-image it... she can use that.
Collector's Edition
Your missing the real test. Web browsing and email are not taxing on the system. But games are. There in lies the real test.
Quake 4 chugs along at 15 FPS in Windows, while in Linux (stripped down in blackbox) I get 27. A far more playable speed. All without that $300 upgrade.
I find Linux to be faster because it's not a one-size-fits-all deal. Linux I can customize, and tweak far more then windows, which is designed for just as you said; web browsing, email, exel. Making it do anything else without pretending to be a hard-core hardware buyer is a different story. Then its bloat shows.
Unix in general (and Solaris in particular) have backwards compatibility through POSIX going back quite a bit.
The ABI hasn't changed in over a decade. I know of some kernel drivers written for Solaris 2.5 that still work under Solaris 9 (SunOS 2.9). Even graphical applications work fairly well using things like X11, Motif, and even OpenGL. Even running mixed 32- and 64-bit environments work pretty well.
FreeBSD has compatibility layers going back to the 2.x releases, though personally I haven't used them so I don't know how well they work. If you need the compat stuf you install it, if you don't, it doesn't take up any resources.
While I commend Microsoft on trying to help users keep their applications, it seems that they didn't think through their architecture thoroughly enough.
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.
The problems lie in GNOME and KDE using far too much memory (and probably CPU cycles as well). That's GNOME and KDE, though -- not X11. Try any alternative window manager/desktop environment, and you're likely to see a vast speed improvement.
Agreed, but that's not a valid answer. Ditch KDE and Gnome and you're left with a desktop environment that is nowhere near as friendly to most people. Sure, advanced users can use it with no issues, but that doesn't help people who are trying to get into Linux, or get others into it.
And the KDE/Gnome issues come back if you want to use a program compiled with their libraries -- at that point you have to load the libs into memory and you're now worse off than you would be if you were running KDE or Gnome already (longer load time due to loading the shared libs, possibly a larger overall memory footprint). Don't use those programs? Uh... ok. There goes most of the recent GUI programs for Linux.
The point I'm trying to make is that XP and OS X can deliver all of the eye candy and usability in the given memory footprint while still being faster than X (w/ KDE or Gnome). That's fairly damning. Both KDE and Gnome are bloated projects (as you note) and could benefit from exactly the same kind of total revamp that Windows needs. Hell, just moving to the STL (instead of recreating it from scratch, or attempting to do OO in C) would help reduce memory footprint, improve speed, and (most importantly) increase development speed.
...than it fixes it. How many times have you found .net foundation issues installing something? Some want 1.1 then you install something 2.0 and it get overwritten next time a 1.1 thing gets installed. Hell, I've had this with office productions that are off version from each other.
.net version of the JVM) is way too each to jump out of, and most programmers do so quite reguarly. By doing this, Microsoft has created a new kind of "dos interrupt problem" like the one that prevented them from moving to a true 32 bit operating system for so many years -- and ended up inflicting windows 95, 98, and FSM help us, Windows ME.
The CLR (Microsoft's
The problem with quotes on the internet, is that nobody bothers to check their veracity. -- Abraham Lincoln
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
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.
The closest thing to that is called "Blackcomb". What's interesting is that it looks to have some of the same goals that "Vista" does (Monad Shell, WinFS, etc.). http://en.wikipedia.org/wiki/Blackcomb
Originally, "Blackcomb" a.k.a. "Vienna" was to be the next major release after XP. However, somewhere along the line they decided to release "Longhorn" a.k.a. "Vista" as an intermediate release. I tend to doubt that Blackcomb is the complete rewrite everyone is looking for - but to give them _some_ credit, they seem to be investigating the "sandboxed" approach and dropping 16-bit app support.
As to why they haven't officially stated/confirmed any aspirations to do a complete rewrite - it's beyond me. I don't see why they can't/won't. They are really dropping the ball by not doing so. If nothing else, why not fork the Windows OS offerings into NT based and "new base"?
The only answers I can think of are:
Third party developers don't like the idea.
Major customers don't like the idea.
It would take a lot of work (i.e. $) to port the real money makers like Office over to the "new base".
All in all, I think the initial hit would be worth it. Though, it is rare that any major corporation looks past the next quarter and/or their bottom line to the future.