Oh, it's definitely worse with Windows, though it's considerably worse
with Vista than with Windows 7.
I've got one of each here and:
* Explorer -- prone to spazzes of high CPU use that slow all other apps
down to stuttery wonkiness for a second or two, but only on the Vista
box. Of course, lowering Explorer's priority lowers that of everything
you launch subsequently, as they inherit Explorer's priority, so the
only way to make Explorer's CPU spazzes less annoying is to *raise*
priority for *everything* *else*, one application at a time. And then
it *still* doesn't seem to help much -- for some reason, Vista's
scheduler is wonky enough that I often see an application with "above
normal" priority get slow and stuttery whenever some other task with
"normal" or even "below normal" priority starts grinding the CPU.
Explorer is particularly prone to be a culprit, probably because M$
decided to give Explorer the ability to "cheat" and elevate its own
priority invisibly to do some things.
Did I mention that all of this is much, much *worse* if Indexing Service
is not disabled? But the 7 box seems OK.
* Windows Defender -- Not something I tend to actually interact with, but
from time to time I'll be working when whatever I'm using slows to a
crawl. If it's not Explorer hogging the processor, it's a good bet it's
the svchost.exe hosting Windows Defender, and while Explorer sucks down
a good 20-30% CPU when it spazzes, Windows Defender saturates a whole
core. Fortunately, giving that particular svchost.exe "below normal"
priority solves it until the next reboot.
* TrustedInstaller -- If it's not Explorer *or* Windows Defender. Most
common for the first hour or so after a post-Patch-Tuesday reboot, but
happens sporadically at other times as well. Saturates one core, natch.
* Photoshop -- Well behaved once running, but there's a brief period
during its startup when the whole machine can freeze for as much as 30
seconds. Nothing responds and sometimes even the mouse pointer gets
stuck for a while, incredibly. That should not be possible without the
"assistance" of badly-behaving code that runs in kernel mode, and no
other app I use provokes this. It's probably looking for a scanner
driver or something like that. Since the pointer can freeze during
this, the operating system is indubitably at least partly to blame, and
not just the user-mode application.
* Firefox -- On the Vista box, frequently freezes for several seconds
when changing tabs, particularly if the tab or, especially, the
application has been idle for a while. Weirder than that, it will
frequently spontaneously navigate temporarily to a randomish page
(unpredictable exactly which page, but not unbiased) from my history
(and render it wonkily), then freeze, and return to where it was on
unfreezing.
Its favorite site to visit while it freezes? Youtube, where often
nothing but the Flash box will display, with some recently-viewed video
paused inside it, and the rest of the page just a blank black or white
for the most part.
I've not seen this behavior on the 7 box with the exact same versions of
Firefox and Flash installed, so Vista's got something to do with it,
unless it's wonky Firefox behavior that only happens on less powerful
hardware -- but it *should* just be incrementally slower on less
powerful hardware, at least as long as you don't go all the way down to
sub-GHz machines from the 90s or something. Instead there's specific,
non-linear and even step-function behavior, and while the machines'
hardware specs differ along a continuum, Vista vs. Windows 7 is a step
function change in operating system and much more plausibly the culprit
for step function changes in application behavior.
* Anything that's written in Java -- On the Vista box, *will* freeze if
left idle for a while and then switched to, for upwards of *five
minutes*, then *usually* spontaneously start working again. If it was
minimized, however, it's got about a 20% chance of freezing for five
minutes and then crashing instead.
The same versions of the same applications don't freeze or crash under
W7. On the other hand the W7 box also has Java 7 (or is it 1.7?)
installed rather than Java 6 (or 1.6). *Maybe* Java 7 is better behaved
rather than Vista sucking. But it's similar to the difference in
Firefox behavior, and Firefox isn't implemented in Java.
* Everything else -- If it's more complicated and powerful than
Notepad.exe, it's liable to be unresponsive for a minute or so if it's
left idle, then switched to. Switching to it, immediately switching to
something else to work on something else for a bit, and then switching
back usually works as a workaround, but it's a nuisance to have to do
this. Most applications seem to "wake up groggy" if they've been
inactive for a while under Vista and older versions of Windows. This is
much less pronounced, or absent, so far in my experience with Windows
7, though.
But, no matter what Windows version, if an application decides to grab a
lot of processor, stuttery behavior in other applications occurs. Making
user interface event loops (unless they started using processor heavily
themselves) automatically elevated in priority would have been a nice
design choice for Microsoft, but they didn't bother.
Failing that, they could at *least* have made a single, interleaved
stream of input events, and saved current mouse coordinates into
mousedown and mouseup events. Then if you moved the mouse to X and shift-
clicked, dragged to Y, and released, the system would always interpret
those inputs the same way -- it just might take longer if something was
hogging the CPU.
Instead, keyboard and mouse events seem to have their own queues and none
of the events are either a) timestamped or b) stamped with the current
mouse coordinates when generated. So the above inputs become a shift-down
and shift-up in one queue, without timing information, a mousedown and
mouseup in another queue, without timing or location information, and an
application that's bogged down can end up processing shift-down, then
shift-up, then a mousedown, then it queries for the current mouse
position and gets position Y by the time it's chugged to this point, then
it finally processes the mouseup when the mouse has moved to Z, resulting
in an unshifted drag from Y to Z instead of what the user actually input,
which was a shifted drag from X to Y.
And that's just bad design, and it's bad design that didn't improve in
W7, as near as I can tell, too. Mouse events as generated by the OS
should include the location and current modifier-key states rather than
an application polling or tracking these possibly after the mouse has had
time to travel farther and a modifier might have been released. And mouse
and keyboard events should be combined into a single stream, thus not
able to end up handled in the wrong order because some component
somewhere was slow in responding.