Posted
by
michaelon Thursday June 03, 2004 @10:30AM
from the pinstriping-adds-extra-torque dept.

mbrowling writes "In an article over at kernelthread.comAmit Singh discusses 'Ten Things Apple Did To Make Mac OS X Faster'. The theme seems to be that since you won't run into 'earth-shattering algorithmic breakthroughs' in every OS releases, what're you gonna do to bump your performance numbers higher? Although the example used is OS X, the article points out that Windows uses the same approach."

I don't mind that they are a possible thing to include. What I don't want to see is them enabled/installed by default.

You have to go through a bunch of settings to tweak it for "optimum performance" or whatever. Those should be enabled by default. The fancy stuff should be enabled easily but it should be up to the user to decide if they are turned on.

I agree whole-heartedly. If Windows came installed 'Bare-Bones', there'd be a lot less annoyed people out there (but I'm sure we'd all miss Clippy)....however, that's one of the issues - who do you decide what should be an inherent part of the OS, and what shouldn't. Although you won't find anybody on slashdot propounding the beauty of having IE tied into Explorer, I know lots of AverageJoes who like the fact that they can just have that address bar on the TaskBar, and type a webaddress into it or a file path. Maybe "Where The Line Should Be Drawn" can be future Ask Slashdot article....

The problem, if Windows came "bare-bones", is that no one would buy it.

Why? Microsoft has a monopoly on operating systems. People don't buy windows because it looks pretty, performs better, has the correct API set. They buy windows because it came on the computer they bought, and that's the computer that they know will run the software they have.

I'm sure there are some consumers who buy windows based on other criteria, but the vast majority of windows purchases are as a consequence of compatibility. If the actual statistics showed only 99% of retail windows purchases were as a result of pre-installation, that's about 0.999% less than I would have expected.

Let me guess, you don't sell OS's right? To move software, you have to have all the pretty stuff that makes it look nice ON by default. Because that's what the general population cares about. They'll look at it and say "Wow, that's ugly, what a crappy OS."... and never buy it.

When it's pretty, *you* will say "Wow, that's pretty, but it's slowing it down, let me go into control panels, and registry settings, and god knows what else to tweak my settings while I overclock the damn thing and stick it in a freezer." Then you'll bitch about it on Slashdot. Which is exactly what's supposed to happen.

Because *they* don't know how to turn it on, and *you* do know how to turn it off. So the burden, by default, is on you. It sucks, but hey, what else is new?

When it's pretty, *you* will say "Wow, that's pretty, but it's slowing it down, let me go into control panels, and registry settings, and god knows what else to tweak my settings while I overclock the damn thing and stick it in a freezer." Then you'll bitch about it on Slashdot. Which is exactly what's supposed to happen.

There are easier ways to enable these "features" than creating a ton of hoops for BOTH sides of users.

Instead of clicking through a bunch of menus, finding the options, selecting radio buttons, etc, just disable it by default and ask at install/setup time "do you want the 'pretty version'? Be warned that it may affect system performance."

"do you want the 'pretty version'? Be warned that it may affect system performance."

That's going to scare away non-technical users though.

MS, love 'em or hate 'em, is doing it right: appeal to the largest market segment with the default settings. Those people who want to improve performance are still be able to, but need to make the adjustments post-install.

Something I like about KDE (and Gnome may do this too--I've just never used it) in this area over Windows is their performance/eye candy slider. You don't have to go through finding which settings are the eye candy and turning them off one by one. KDE has a slider that you can drag toward features or performance, and it shows below that the settings that are being turned on or off.

There are easier ways to enable these "features" than creating a ton of hoops for BOTH sides of users.

What fucking hoops?

Right-click My Computer->Properties->Advanced->Settings button.

Choose either "Best Performance" or "Best Appearance." Or check each option individually. What a non-issue.

If this was KDE, someone would have already answered with this, but because it's Windows, everyone just nods with the rest of the flock, "Baa, baa, yes, there are hoops to jump through, baa."

Speaking of KDE, talk about fucking hoops. You've got a completely horrible control center, with three different areas for changing the looks of things like window styles, widget styles, and so on. Why the hell isn't that all integrated into one configuration dialog? Oh, I forgot, ease-of-use is a criticism we only reserve for non-issues on the Windows platform like checking a radio button to get rid of a blue theme.

I mentioned the eye candy slowness recently, and somebody came back with a reply that made sense:

Windows's idea of eye candy was that menus (and submenus) would all slowly fade in. The process of navigating deep into hierarchical menus was maddeningly slow--at least until everyone turned it off.

In osx, menus appear immediately, and then fade out after you select something. This is not only pretty, but functional: it gives you visual confirmation that you've selected a menu item, which can be helpful if

Ugh I hate this question. "Is it really necessary?"... is the type of question you can ask if you really want to make anything go away. "Is a >500mhz processor really necessary? Is a color monitor really necessary? Is being connected to the net 24/7 really necessary? Is a color printer really necessary when B&W is cheaper?" Who really cares so long as you can choose?

I'll answer your question, though: The more your UI gives you, the better reflexes you can build while using your machine. Have you ever reacted to a screen refresh? (Particularly in the olden days when the CPU had to fight harder...) Ever notice change in window focus simply by spotting the change in titlebar color? Etc.

I have no problem with people turning the fancy stuff off to boost performance, but the "is it really necessary" argument does not apply. The question is really "Do I want it?"

I'm surprised by how much people are ignoring this. Every single time Apple releases a new version of MacOS X they cut out a bunch of Aqua special effects. The most notable thing was when they took the striping away from the dock, which made that critical UI element pop up much faster. These aren't really optimizations so much as "taking away features to make it go faster."

For a comparison you can run X with fvwm in (not in rootless mode) on MacOS X and see the difference. Or turn on terminal transpare

Apple removed striping from everywhere in Panther. Quite a bit of it was replaced by brushed-metal. Even so, all it is doing is replacing one bitmap with another. The only possible gain is if they do not need to use alpha for transparency. Yet not all of this is by "removing" stuff. Quite a bit of tweaking is being done to speed up the OS, the most recent software update resulted in quite a few reports of faster system operation, and there was no discernable change in the featureset or operation of the UI.

The reason X runs slowly compared to Aqua is that Apple optimizes Aqua and allows harware acceleration (Quartz Extreme) and offloads lots of tasks to the GPU. I know of no X windowing system (aside from Apple's own implementation) that does this in OS X.

10.0 and 10.1 were dog-slow. Especially when you had a couple of hundred files in a folder. Jaguar was a huge increase in speed and performance. Quite a bit of that was due to the Quartz Extreme, but even my lowly 500MHz dual-USB iBook saw quite a boost from Jaguar and it was not able to use QE at all. Panther did very little to the iBook, except make it take forever to boot. I need to check on that bootcache issue.

My dual 800MHz Quicksilver is now almost three years old and I am still very happy with its performance. I expected to be wanting to replace it after two years, or after clock speeds have doubled, which is what I did when I used Wintel systems. Instead, I am considering keeping it around for the 10.4 release and at least another year or two. I attribute quite a bit of this to Apple's tweaks and performance enhancements of the OS.

They are fine so long as they remain optional. There are times when a transparent window has functionality beyond just looking cool. The ability to see what's printed in the window behind the one you're typing into is useful when reading a manual (in the form of on-line help or a web page), and using that manual to decide what to type into an editor or shell prompt. (This is the same reason I hate systems that force the keyboard focus window to always be the topmost window. Ever since I first felt what it was like to have the two decoupled, using Sun's openView system in 1992, I never wanted to go back.)

What really bothers me, and it is the main reason I have stopped using Gnome, is this: Developers often assume that the moment the computers get fast enough that they can respond to fancy graphic requests using 100% of the CPU time, that this is the point where all reasonable people would stop complaining about the time they take up, and would be happy to have the little graphic toys unconditionally turned on at all times. This I call "bullshit". It's only when the fancy graphic requests end up taking a teeny, tiny fraction of the CPU time that it starts to become acceptable to leave them uncoditionally on.

I don't just want fast response from my UI when the system is under light load. I also want fast response from my UI when there's a runaway process I need to find and kill, or when I'm calculating some big raytrace in the background. So, yes, even in this day and age where you can't find a new computer with less than a Gigahertz clock rate, it is STILL worth it to provide the user with the ability to turn off features that require a good amount of CPU usage.

It's up to the owner of the computer to decide what to spend their CPU time on, not the maker of the UI.

I know it was a joke, but apple's GUI is rendered using the video card's processing power, not your CPU's. So such fancy effects are using cycles that would otherwise be idle, giving no performance hit at all, and making it look fricking cool at the same time.

You've got to be kidding me. XP is CRAZY slower than 2k. I suppose thats what happens when you add a Microsoft+ package to Windows 2000. Wanna make it faster? Disable all the useless services and shut off the ugly eye candy. *sigh*.

XP is faster to come up to the desktop. However, it is still busy accessing the hard drive and loading stuff in the background. You still have to wait for the OS to quit loading itself before you can use anything. Microsoft's claim that XP is faster than 2K was based on the time to desktop, apparently not time to usability.

Once loaded, XP has an annoying habit of wanting to refresh the desktop from time to time. That slows things down even more.

"If that's what you mean by "refresh", then that's actually Windows Explorer (which the desktop is an instance of) crashing followed by a background process realizing it died and starting it back up."

Um, no. XP gives you an 'Explorer just crashed' message when it tanks. Heh my coworker next to me is actually having this 'explorer likes to crash regularly' problem. When you lose your taskbar and all your icons in the system tray disappear, then you know Explorer has gone south and restarted.

Windows does have a 'refresh and rebuild the desktop' function. It's the same one they use to put your desktop icons back when you change video modes. (I.e. playing a game.) That's exactly what the person is describing.

Wow, all this speculation. When windows refreshes like that it's because you changed a "system" setting, and set a "systemchanged" event. This causes applications that support it to refresh their settings from whatever store they have them in.

upgrading from 2K to XP on the same hardware will slow you down. Upgreading from OS X 10.2 to 10.3 on the same hardware will give you speed improvements a majority of the time.

I can see how they can write an artice about how apple did this but to claim that Microsoft does it too. I don't see how. Unless Microsoft has improvements but enough of the new things they add slow it down so much more the gain is outweighted by the loss.

I've used both it and 2K on several machines, and XP boots up ~30 seconds faster

Microsoft tends to spend more time figuring out ways to trick their users into *thinking* that things are faster even though it's actually taking as long, if not longer than previous versions. In this case, you've been tricked. Microsoft moved more stuff after the user is logged on. In other words, your system is still doing all of the things it used to do, plus probably more, it's just that you think it's done.

This is the difference between reality and perception. Microsoft tries very hard to address a user's perception, even at the cost of making reality slower. As is, in the above cited example, Microsoft gave you a login screen, whereby, you can do very little to nothing, but you're satisified thinking it's done, in spite of the fact (reality) that it's not. This means, attempting to do things right after the login screen will more than likely, take much longer than expected. They further hide this fact by making application startup and caching part of the OS boot sequence. Non-cached application startup, following initial login, will more than likely be painfully slow for non-trvial applications, at least until XP actually finishes it's startup.

Microsoft tends to spend more time figuring out ways to trick their users into *thinking* that things are faster even though it's actually taking as long, if not longer than previous versions. In this case, you've been tricked. Microsoft moved more stuff after the user is logged on. In other words, your system is still doing all of the things it used to do, plus probably more, it's just that you think it's done.

Perception is what matters. I enjoy working at a computer that feels fast and responsive. If a

Well, all I know is that my own experience is different from yours. Not to mention, my experience is generally regarded as recreatable. That is, while I'm "logged in", my machine is technically worthless until it's finished starting up the system and doing all the things that Linux makes you do up front. In other words, when I have my desktop on Linux, I can immediately start using it. Under 2K and especailly XP, I have to wait, wait, wait before the system is responsive to my applicatin requests. That's the way MS designed their system and that's the way everyone experiences it. I guess this goes back to the perception versus reality difference. Like I said, it's up to you to decide if it's good or bad. I say, "indifferent". You seem to say, "good". Others say, "bad".

It's worth noting, if nothing more than FYI points, there are ways to drastically speed up Linux's start up times. They range from using LinuxBios to changing out the init scripts for scripts which are are to run highly parallel. Last I heard, the init scripts alone, take off 10s of seconds. It's just that people would rather have UNIX and Linux compatibility.

At any rate, I'm really not sure what you mean by, "USABILITY" being faster. If you mean the speed of the overall system as it relates to user responsiveness, then I suspect you have something wrong with your Linux configuration. Usabiity between the two systems should be equally high. Personally, my usability goes way down on Windows systems because it lacks so many of the powerful X features, out of the box anyways. But, I recognize that I'm not the typical win/linux user.

Lastly, I must say that I find it interesting that you find XP to be faster than 2k. XP is widely regarded as being slower (yes, with everything turned off) than 2k, as far as the user interface is concerned.

Some of these differences might center in how we're using our systems. My uses tend to be more of a workstation/desktop while you're may center completely around a MS-desktop solution.

Ya, benchmark after benchmark showed all of XP's IPC mechanisms to be much, much slower than previous releases. IIRC, several other subsystems were found to be slower as well. By those in the know, XP is widely regarded as Microsoft's slowest OS release in a long while. The only reason it's not widely realized is that machines constantly get faster and more memory is being used which hides the additional bloat.

Anyone that thinks MS' OS, as a whole, is getting faster with each release is simply not living in our reality.

Largest bottleneck in any modern system. If you've never had the opportunity to use a 15krpm (or something faster) system, do it now. It flies... I don't care if it is Windows or what... it doesn't matter when you've got usable bandwidth to the biggest chunk of storage out there.

Dedicate 2-3Gb of it to a ram drive and mount it as your root,/usr,/opt partition, whichever one you have all of your applications installed on. Copy the hard drive to the ram drive at bootup. DD can do it quickly if you just zap the whole partition across. I think there are mount options to tell the Linux filesystem buffer not to cache a particular filesystem.

You have an interesting definition of "justify". Besides, letting the VM do it's own thing with the buffer-cache does *much* better than stuffing RAM full of some random portion of disk that you think is 'important'.

You're right, it does still have to be read once from the disk into RAM, and that's where I take my performance hit, at boot time but if you use dd with the right options on the partition rather than the filesystem, the disk will stream it at whatever the maximum streaming speed of the disk is, 50MB/s, 100Mb/s? It adds around 20secs to the boot time for me.

Yup I have 2 copies of the apps in RAM. I have 4Gb of RAM, 2Gb of it as disk. My system doesn't swap, it still has 2Gb of RAM used as RAM and the perfor

Here's [vanemery.com] a "mini-HOWTO" that I found via google. I didn't read the whole thing, but it looks informative. Wikipedia's Ramdisk entry [wikipedia.org] had links to two stripped down knoppix distros that could be loaded into a ramdisk - Damn Small Linux [damnsmalllinux.org] (50 mb), and Feather Linux [berlios.de] (64 mb). I've never done anything with ramdisks (I'm a linux newbie, too) but they do sound pretty neat.

Agreed. My Pent III 800 mghtz, SCSI computer (scsi hard drive, dvd player, cd rom) with 512 ram, Hercules 64 Meg video card runs games like Diablo II MUCH MUCH Faster then my 2.2 ghtz laptop with 512 ram, a better video card (Nvida GForce 4 Go card), "faster" IDE dvd rom.
A better test. When I upgraded from IDE to SCSI I performed a DOS level copy. The screen would scroll and periodically pause when reading from the IDE drive. The IDE drive was 7600 RPM, the SCSI HD is 15k. When it would write to the SCSI drive, it FLEW! Never once did it pause.
WHile scsi is expensive, runs extremely hot (meaning you need more fans), and is fickle at best - when it works it does WONDERS.... For those people who like to have a RAID system - SCSI is still faster as it reads & writes faster... but again it is more expensive (usually about double - triple)
-A

Nope. Overall seek is the sum of average seek + rotational latency + single sector i/o (to account for head settling time). Seagate calls it average read time, although I like to use writes when measuring it. Track-to-track seek is not very interesting, unless you're a disk manufacturer, or a salesman playing games with specs.

With buffer cache you're always going to have to touch the disk at some point and that point wastes billions of CPU cycles.

Most systems nowadays use a DMA-type system (Direct Memory Access) [pcguide.com] which streams data directly from disk to memory without involving the CPU much at all. The real slowdown is not the CPU cycles getting wasted, it's that the CPU can't work on the particular data you need until it is loaded. During the DMA loading process your CPU could be using tons of cycles on other tasks that are not waiting on data.

Smart read-ahead precaching and buffering attempts to ensure that your processes will not be data-starved. Yes, buffering can fall behind but overall it does considerably speed up a system.

When I click on Open Office or Netscape the CPU and I have to wait for the disk to finish the transfer before we can work. A 15k does it faster. The CPU cycles are wasted because on a desktop they're rarely used for something else. I'd agree with you if we were talking about a server.

So pretty much, Mac and Windows are made faster by using resources when they're not being used already. Not a genius idea, but the hard part is figuring out how to do that, which is what the article discusses.

.. but I thought that the primary 'reason' for OSX slowness was that Apples binary format is designed to maintain 'compatability' with the register set of the 68k processors, and in fact they're not using all the PPC registers in a way that is most efficient?

I haven't looked into it for a while (mod me down for being uncertain if you like), but I seem to recall that there were serious leaps and bounds still left in OSX performance, with a change to the ABI register use, potentially, in the future...

Try running LinuxPPC on your mac some day, and you will see a huge difference in general snappiness.

I'm not saying OSX is un-usably slow, or even slow at all - heck my Rev. A tiBook, beaten and aged, is still all the computer I need, and I am very productive with it... but I do have to admit that in all my computing experiences, OSX seems to be the one OS that is more 'acceptably mediocre', performance wise, than any other.

On the register side of things, I can't for the life of me remember the full details, but I believe that the ABI for OSX only uses a sub-set of the PPC's full register set, and thus this means more swaps in/out... that there are 'unutilized registers' in the PPC architecture when it is running OSX.

This is separate from AltiVec, which is an instruction set, not just a register setup...

The only thing that's even remotely like what you're talking about is the Mach-O ABI and how it accesses global addresses.

Mach-O the ABI (not to be confused with Mach-O the executable format, which is totally different) accesses global addresses via PC-relative addressing. This design decision was made back in the NeXT days, and made a lot of sense at the time. Unfortunately, the PowerPC doesn't have any support for PC-relative addressing, so the only way to do it is to use several instructions and induce a pipeline stall in the process. Depending on how a program is written, this problem can mean up to a 10% speed hit.

That is the only brain-dead decision in the ABI that I'm aware of. It certainly makes good use of all registers, intelligently defines leaf procedures, and in general makes full use of the PPC architecture other than that one problem.

Altivec includes both instructions and processors. That is one of the things that makes Altivec really cool, is that it has a shitload of vector registers that are totally separate from the other registers, and don't interfere in any way.

Try running LinuxPPC on your mac some day, and you will see a huge difference in general snappiness.

But then the OS is 'doing less' too, so that's not really a good comparison. Linux GUI's are not as advanced as OS X at this point. They don't use a display postcript like system yet, don't yet have the same level of integration in terms of plugable software frameworks, etc etc

This is separate from AltiVec, which is an instruction set, not just a register setup...

OS X is a new development for PowerPC, not an improved 68K based system like OS 7

This is incorrect. Mac OS X actually dates back to the mid-eighties and was originally developed for... yup, 680x0 based systems (I believe the original NeXT Cube had a 68020, can't be bothered to look it up now.) On top of which, in its original form, it was based on other pre-existing components such as the Mach kernel which date back even further.

After all, they make OS X for a very limited subset of hardware that they also produce (or at least assemble). Presumably they write all the drivers (or at least have input to them) and are already making use of a lot of good work from the Open Source community.

What takes genius is getting every ounce of speed from a Linux or Windows box that can be a conglomeration of different motherboards, CPUs, graphics cards, hard disks, etc.

What takes genius is getting every ounce of speed from a Linux or Windows box that can be a conglomeration of different motherboards, CPUs, graphics cards, hard disks, etc.

No. What takes genius is getting every combination of different motherboards, CPU, graphic cards, hard disks, etc and make it *ALL* work flawlessly and without any configuration at all. Just plug it in, turn it on and it's ready.

No updating drivers. No having to check for incompatibilities between different mobos and wifi chipsets (o

Actually, if you had bothered with reading the article instead of repeating the old Apple has it easy with limited hardware cliché, you would have noticed that this is absolutely not related to driver performance.

Only one optimisation presented is related to hardware drivers, and it is cache of what kernel extensions will probably be loaded. Most of the optimisations (basically lots of caching and dynamic defragmentation) could be implemented in Linux, regardless of the amount of supported hardware.

IMHO, the next major revolution in OS design (and performance) will be from an exokernel [mit.edu] architecture. For those who aren't familiar with them, it's a completely radical and different approach to kernel design, the main idea behind it is seperate protection from management. If you really think about it, who (I use that term loosely) would know better what resources, scheduling, etc an application will need - the kernel, or the application itself.

Traditional kernel design techniques give the (pretty much) the entire management of resources to the kernel itself and hide it behind a HAL (hardware abstraction layer), allowing the application little to zero say in the matter. Exokernels throw that idea out of the window, taking a completely opposite view on the issue. Once you give the power to the application, it opens a whole new world of OS design.

It's really quite interesting, for more information on different kernel designs you can check out the Microkernel entry [thefreedictionary.com] at thefreedictionary.com

I've been using OS X since public beta, and every upgrade has been considerably faster, even on my four-year old G4/400. I expect to be using that machine as a server well into the future, mostly due to the fact that Apple is doing such a good job making operating systems work well on older machines.

And the fact that I won't be discouraged from keeping 10.3 or 10.4 on that system if the next version doesn't support my hardware through annoying EULAs.

I wish these were incorporated into linux more. I don't care what anyone says, comparing windows and linux on the same machine has always shown to ME that windows seems a lot faster. Applications take longer to load in linux. Mozilla for example, takes longer to load than it did in windows on the same computer. Other applications that I can't compare directly seem to take a while when they're just small apps.

Aparently, windows caches a bunch of stuff and has a bunch other little hacks that allows this. So why can't linux and the kde people do this. They've copied everything else, why not this?

Before you mod me as flamebait or troll, I switched over to linux a while ago and I have no intention on going back to windows. I'm not some ms fanboy bitching about my 10 minute experience with linux. All I'm saying is that here are some points where linux annoys me.

I'm using mandrake 10. I decided on this distro because it's the easiest I've found and I wanted to introduce myself with my hands held. I've heard of prelinking and I've googled for it but I haven't found anything that can easily explain how it works and how it's used. Most stuff I've read on it just says to "use it." If anyone knows much about it or can point me and I'm sure many other people in its path that would be appriciated.

I have always found Mandrake to be very slow. I started with Mandrake 7

I know what you mean. In fact, I wrote a "call for help" a very loing time ago about just this, as I had purchased (at very low price) a bunch of old vectras for use as "giveaway desktops" and I was looking to make the most of their 200mhz pentium mmx cpus. I tried several different linux distros with minimal windows managers (like blackbox) and none of them felt as snappy as the same machine running windows 2000.

So, I know what you mean. And I've even noticed the same thing when trying ootb installs of ma

On my windows2000 box (which is also my SuSE box) I use mozilla because I can move my single profile easily between systems. And in windows, when I've had mozilla minimized for a long time while doing something else it takes damn FOREVER to reopen. I don't hear a lot of disk activity, it just takes a really long time for windows to switch back to the task (I don't use the tooltray "always on" feature because this makes my desktop more likely to crash).

KDE apps has down right painful startup times, especially if you don't run KDE. That being said, I find parity in application start ups between the two and generally find Linux to be faster for most everything I do, save only for playing games (like NWN).

Some efforts have been going into making KDE and KDE applications start up faster. Just the same, if it bothers you that much, don't run KDE or KDE applications. There are many window managers to pick from. Even GTK+ applications tend to load much faster than KDE applications (C versus C++, which is the root of one of the speed issues).

The overall performance of X and Linux will be faster and more responsive as the 2.6 kernel starts to become more common. A typical desktop user should see something like 20%-40% better performance and responsiveness. Even servers typically see 20%-30% improvement in almost all areas. Improvements like these, make applications like apache and samba, which already blew the doors off of Windows, that much more impressive.

Beyond that, start up time, in my mind, is a complete waste of time. Unlike Windows, Linux does not become unstable as you load more applications into memory. Start your computer and all of your applications (memory is cheap; tuning you swappiness as needed) and never have to load them again. I find that application crashes are rare; well, the ones I run. This means, rarely needing to restart your applications. As such, restart time is lost in noise. Furthermore, system stability can easily be measured in months or years as long as you're not running a closed source 3rd party driver (*cough* nvidia, ati).

Long story short, while I hear you and think you have a valid point, the long of it is, it's completely lost in the noise and really doesn't matter.

The case of mshtml.dll, shdocvw.dll, urlmon.dll are a little different. These are *system DLLs* which can be used by any app, including IE (iexplore.exe) -- and the shell (explorer.exe). Explorer in particular will load urlmon if you visit FTP or WebDAV sites.

IIRC after login on a fresh Windows 2000 install, none of mshtml, shdocvw or urlmon are loaded.

Note that Working Set Detection/Maintenance on Windows can change this over time, but it will do so even for Firefox or any other non-MS app.

Btw, the real reason IE and Office start up quickly is because they are better engineered that the competition -- which is typically cross-platform portable code that is not particularly optimized for Windows. Reducing startup time is not necessarily a black art:

[...] Startup time is all about minimizing disk I/O. So analyze your startup code to death: Track every page fault and work to get rid of it. Delay initialization of everything that can be delayed. (The fastest code is code that doesn't run at all.) Take all the functions that are called at startup and put them near each other in memory so you take fewer page faults. Use the/ORDER switch to do this. If you have a large function and only half of it is used at startup, break it into two functions, the part used at startup and the part that isn't. Reorder your data so all the memory used by startup is kept near each other in memory. With CPUs as fast as they are, disk I/O is the limiting factor in app startup. [

Not sure what your point is, but Open Office and Mozilla both run slower (_and_ open slower) than Office and IE on comparable hardware. Thankfully, Firefox opens slower than IE, but is almost as fast in use for most common tasks, which lets me use it for day-to-day browsing.

You're only telling half truths here. One of the speed ups that Microsoft does is, they analyze I/O and physically re-order the applications on disk to minimize I/O, thusly increasing startup speed.

Furthermore, you assert that, "they are better engineered that the competition", which is completely false. It requires a superior engineered product to be crossplatform. In this case, IE has a speed advantage because it's NOT crossplatform, thusly allowing for more reasily available platform specific optimiz

2) Turn off some of the eyecandy. All those fades and whooshes and stuff don't actually do anything useful, they just consume CPU cycles and waste your time.

3) Use Ad Aware and SpyBot regularly to keep scumware out of your computer. I had to clean up a PC this morning which had stopped working because the BASTARDS at NewDotNet wrote some software which fucked the TCP/IP stack backwards.

4) Defrag regularly and run MSCONFIG to check what crap is sneaking back on to your Startup scripts.

BTW, Windows 3.1 sitting on MSDOS 6.2 ran like shit of a stick on my old P133. I wonder if/how it would run on a modern system?

Sure, prebinding does speed up loading, but it also breaks everything from tripwire, to backup. Since the file is changed out from under you, all traditional unix tools that use checksums or file size to determine file changes break.

Apple, and other system vendors need to consider these types of management issues when making a change. Speed improvements are only good if they are "management friendly"

The number one thing they should do IMHO is reduce overhead. Using Microsoft Windows as an example, windows 98 has much less overhead than 2k, which in turn has much less than XP. A lot of it is eye-candy, which is all well and good, but those should be options that are OFF by default. XP differs from previous versions because it uses a 'shell' based gui (similar to KDE / GNOME, etc), which, while nice, is going to cause some system slowdown. Using the 'explorer' shell, which is heavily intergrated into the Windows OS, is the fastest, and should be the default. Then if people want to change it to look pretty [litestep.net] they can, by sacrificing speed (in slower machines).

Stop adding services / features that are on by default, and you'll see a huge improvement in speed.

I'm not sure if one can say on a general level that even the majority of users considers speed to be important. I'll take up OS X because I remember reading a quote on an Apple webpage -- Why did we do it [fancy graphics *everywhere*]? Because we could.

I'll simplify the comparison quiter a bit, but I think Apple decided to trade speed for distinguishing features. It must've worked, because people noticed.

While I agree with you, there's a very good reason Microsoft won't change their defaults: because its more important for Microsoft to get version differentiation / recognition by the unwashed masses than it is to get best performance. You set a novice computer user in front of Windows XP (with the fugly XP shell) and Windows 2000, and John Doe *immediately* knows which one is XP. So when John Doe is ordering a machine from Dell, or standing in Best Buy or CompUSA, he knows he's getting XP (which he wants

Of course one could argue that is worth making the GUI faster to give an apparent speed increase whilst allowing improvments in CPU/Disk to carry the rest of the OS. Then again of course I know nothing about system design

Hard Drive is the bottleneck........
Has anyone tried using a RAMdisk as their OS drive? I've read a lot and heard of people trying, but never come across a comprehensive how-to + review. With the amount of ram we can have nowadays (new pc's coming with 6 banks for dual-channel DDR), I'd pay $250 for an extra 2GB of ram in order to have my OS + key apps run off of that.
Other solutions? (CF too slow?)...

Many moons ago, it was possible to make a RAM disk on a Mac, install an OS on it, and (warm) boot from it. It would remain in memory and work perfectly as long as the computer wasn't shut down-- it could only be restarted. I tried it once or twice just to check it out, and the computer booted and ran like lightning compared to the normal hard drive boot.

One of the utility suites back then (Central Point Utilities?) even had a feature where the machine would boot from a RAM disk with the utils on it, to fix the occasional really serious Mac problem.

Booting from a RAM disk stopped being possible after Apple made a hardware change in newer Macs that had the side-effect of making the RAM non-persistent through warm-reboots (i.e., your RAM disk would go bye-bye). I forget exactly when it happened... perhaps after the first generation of Power Macs, when they went from using NuBus to using PCI?

Here's another interesting fact. The Macintosh Classic, released in 1990, had System 6.0.8 (IIRC) burned into its ROM-- you could boot it disklessly from the OS in ROM by holding down Command-Option-O-X at startup. Nobody really knows what that feature was intended for.

c) Have a shutdown script that will always run on shutdown. From what I understand, Windows has more then one shutdown (there's at least 2: the "slow" shutdown you get from Start -> Shutdown, and the "fast" shutdown you get from pushing the soft power button on your case).

Early versions of some film scanner software that I worked on were terribly slow. A quick profile of the running code showed that about 10% of the time was spent in a little piece of code called TtoF(). This code parsed and coverted text into floats.

The earliest versions of the software did not convert key preference/calibration/setup files into internally stored numerical values -- instead, anytime the code needed a calibration/setup value, it went to the file, read it, and converted it. Needless to say, that "feature" was quickly corrected.

That's not as bad as an early VAX image processing program that prepped newly allocated file space by setting all the bytes to zero, one byte at a time.

This holds especially for applications, but it definitely applies to operating systems as well. Most modern software is simply bloated beyond belief.

BeOS, by all accounts, is a full-fledged OS, and it takes a Pentium (not Pentium 4, but original Pentium) 15 seconds to boot it, including the GUI. What's up with Windows and OS X taking over a minute on hardware that is several times faster?! On Linux, you could at least skip most of the init stuff and boot in seconds (likely mostly pauses that you have to keep for faulty PC hardware).

Then there's the libraries. glibc is well over 5 megabytes. You are not going to convince me that isn't bloatware. If all that code doesn't eat CPU time, it at least eats memory, which could lead to more swapping. GTK is also typical - ever resize a GTKWindow? It's visibly slow! That doesn't happen to Windows 3.11 on my grandpa's 486! What is that code doing?!

Applications... Firefox is what? 10 megabytes installed size? And that's a light weight browser. What? We need 10 megabytes on top of libc, X, and GTK for parsing a simple markup language and rendering those widgets? Excuse me! Even lynx is hundreds of kilobytes, and it mostly just reads data from a socket, strips the tags, and spits it straight out. What the fsck? Say "OpenOffice.org" or Java and I'll explode.

All we have today is bloatware. I'm *really* tempted to roll my own OS and applications, and I am going to have a shot at it this summer.

I have a nice utility from Logitech called iTouch. What does it do? It handles key mappings for their keyboard that has some custom key.

Application memory space during runtime? 15MB.

I remember when Borland spend a lot of effort to optimize their Quattro Pro spreadsheet so that it was monitoring it's own memory usage down to 512 byte increments. It would start discarding portions of itself that it no longer needed.

I worked there for years, through the development of Win95 Osr2, Win98, Win98 SE, Win ME (but that one wasn't my fault), WIn 2k, Win XP and into the first little bit of Longhorn...
Longhorn will be as slow as or slower than the current XP systems, even when properly configured.
We don't call it "Bloatware" for nothing.
One way to make it faster is to cut out all the crap. If someone wants to install Solitaire, FANTASTIC, let them choose to do so, but for crap sake, DON'T install it by default...
Fix the File Tables, Fat32 was good, NTFS is better, they say the new schema for Longhorn will be better, if they can ever get it working...
If a user wants the colors and blinking things, then let them set it that way...don't make that the default...
Just because a processor can hit 3.2 GHz DOES NOT mean you have to use every Hz of speed...
Just because Hard Disks are not in the hundreds of GB, does not mean you must fill it up with an OS...
Just because memory is "cheep" and some systems can handle 2 gig or more, does not mean you must use the whole thing to manage your OS...
The system requirements for Longhorn are rediculous at best...when Longhorn ships, Linux will finally get the break it needs!

This is technically offtopic, but often much of the 'slowness' we still experience on our computers which people often blame on their 'operating system' isn't really down to the operating system (i.e. kernel), but more the higher level stuff that runs on top of it. It seems that lots of efforts are going into making operating systems more efficient, since there's lots of interest in this area, but that efficiency is more than lost further up. (Not that I should be complaining, since I'm just another person not doing anything about it.)

Try running Windows NT on a new Intel system (say 2-3GHz) for example - it'll run blazingly fast, and with software versions from around the same time it'll still do much of what everyone wants to do - email, web, office, graphics manipulation - but really much faster - things will load practically instantly, rather than after five or ten seconds, and it's all still nice and graphical and everything, just like people want.

Many (but not all) XP machines I meet still seem to take 2-10 seconds even to do basic things such as open My Computer, Internet Explorer or a properties dialog, which one has to wonder is worth the wait for the extra functionality - basically lots of drivers, a couple of extra bundled programs and supported file formats, minor changes to the interface and the other couple of things I'll get flamed for forgetting. Microsoft have no doubt made some improvements to the kernel between releasing NT and releasing XP, but most still seem to be no faster to use, if not slower.

I maintained a school network up until last year which still ran NT and KDE2 on around 2/3 of systems, and then when my replacement went and wiped everything out and replaced it with new machines running XP (with an enormous cost to them), many staff told me that there were lots of things that didn't work any more, and there'd be frequent outages of the entire network.

On a Linux+X system, running X on its own (i.e. just the one program you want) or with a light window manager (fvwm or whatever) is again noticeably faster than running Gnome or KDE. Loading Mozilla or OpenOffice.org means loading the entire frameworks they run in, and often we're loading up a great deal of functionality we don't want in that particular situation. I think a good example is Dillo [dillo.org], a web browser written entirely in C that just does the basics (launches in around 0.7 seconds on this Athlon 700 system, compared to Mozilla, which takes around 5, and Mozilla Firefox, which isn't far off that) - it'd be interesting to see if they could add things like CSS or SSL support and still keep it fast.

Filesystem journaling does not make the filesystem faster, and it's silly to suggest that it does.
In fact, journaled filesystems are generally noticeably (one might say significantly) slower than non-journaled ones.

As you'll see from this benchmark [macnn.com] Apple's implementation of journaling has generally negligible effect on performance, and some operations do in fact run faster.

Do like IBM did with OS/2's big revision Warp. All the changes to Warp slowed performance down in general so IBM used smoke and mirrors. They worked on speeding up screen I/O as much as possible. End users raved about how fast Warp was. Looks faster, feels faster, but any program that required much prcessing was getting slower and slower. But joe user thought he had a speed deamon becasue the screen painted real fast.

1. turn on apple II series box.2. Press Ctrl+break (? it's been a looong time since I used one).3. You're done.It takes under 2 seconds. Show me a "new" machine (see: desktop,server or notebook from the last 5 years) that actually boots that fast, please! (not just turns on the monitor)

It's not exactly "booting", but if you take a sleeping Apple notebook and wake it up, it'll usually be ready to use before you even get the lid all the way open. Re-establishing a wireless connection takes a few seconds, but local functionality all comes back on instantly.

Apple computers do not hibernate. Rather, when they "sleep", enough devices (in particular, the dynamic RAM) are kept alive (at the cost of some battery life, if the computer is running on battery power). Consequently, upon wakeup, the user perceives instant-on behavior: a very desirable effect.

I don't know how they can be proud of not
hibernating. Windows can sleep OR hibernate. Although being a Mac household, hibernation is one reason I MIGHT consider
windows for my next laptop. The ability to get back to all you have left around with your laptop hibernating for a few days unplugged and still have full battery power when you open it up is VERY nice.

Whenever you install new software, you have to wait while the system "optimizes" it, which in fact means checking for applications that need their prebinding redone. On a 700MHz imac - less than 2 years old - this sometimes takes 15 minutes or more. Since I bought it, I've wasted hours, if not days, waiting for installations to complete because of this, which is far longer (and more frustrating) than the total time saved starting programs.

I don't understand why it doesn't just leave the prebinding to be done the first time the program is run.

There are two kinds of speed: things that are fast and things that feel fast.

The article and the comments here on/. are mainly talking about true benchmarkable speed. Things that are fast.

But some apps don't really need to be fast. They just have to feel fast. This holds true for most interactive applications. It's all about psycholigy with this one.

Ever wondered why Windows Explorer builds up its icons from the right bottom to the top left? Doesn't matter in real speed, but it just feels faster. Your brain just isn't used to this flow: usually you read from the top left to the bottom right, or you read from the top right to the bottom left. Your eyes immediately focus on the spot your brain expects the icons to appear. But instead the appear in the opposite corner. By the time your brain figures out it has been tricked, the window is already full of icons.

More tricks: ever wondered why windows wastes memory by trying to have some free memory ready all the time? It makes starting new apps faster. But on average the system is slower.

In the Unix world there is only raw, benchmarkable speed. And that's why KDE and Gnome are slow. They aren't slow, they just feel slow.

People have said this before, but maybe you didn't catch it: Successive releases of OS X have actually been noticably faster, even on older machines.

Don't take my word for it -- take Ars Technica's [arstechnica.com] review of Panther for example:

Here's another way to look at Panther's performance. For over three years now, Mac OS X has gotten faster with every release -- and not just "faster in the experience of most end users", but faster on the same hardware. This trend is unheard of among contemporary desktop operating systems.

That's the way to get work done - don't install any apps! Who needs LaTeX?There's no point removing features to reduce the mythical "install bloat" if you can't actually do anything with the system.Relying on shared libraries rather than stand alone binaries actually improves performance, by reducing memory usage when lots of processes use the libraries, and allows optimisations of the libraries to speed up all the apps that depend on them.Small does not necessarily imply fast. For example, a project I work