752 points · 667 comments · 2 years ago · dceddia
twitter.comyomlica8
NovemberWhiskey
Windows NT 3.51 minimum hardware requirements were a i386 or i486 processor at 25MHz or better and 12MB of RAM for the workstation version. So the 600MHz machine with 128MB RAM is exceeding the minimum requirement by (conservatively) 24x in CPU speed and 10x in RAM, along with all the architectural improvements from going from the i386 to what's presumably a Pentium III-class machine.
If that's actually a Surface Go 2 running Windows 11 - well, it doesn't have a quad-core i5 as the tweet claims - the Surface Go 2 came with a Pentium Gold or a Core m3; both with only two cores and of those is an ultra-low power variant.
As such, that exactly meets the minimum CPU specification for Windows 11 and only doubles the minimum 4GB RAM requirement.
I'm not trying to apologize for the difference here, but it's not an entirely like-for-like comparison.
verall
Has anyone else noticed how bad sign-on redirect flows have gotten in the past ~5 years?
It used to be you clicked sign in, and then you were redirected to a login page. Now I typically see my browser go through 4+ redirects, stuck at a white screen for 10-60 seconds.
I'm a systems C++ developer and I know nothing about webdev. Can someone _please_ fill me in on what's going on here and how every single website has this new slowness?
dataflow
Another big chunk of this likely happened when they hardened the graphics subsystem for security. Win32 user calls are unbelievably expensive nowadays. SendMessage etc. have a ton of overhead.
Another chunk is likely the sheer number of expensive DLLs that need to be loaded and initialized with most apps. For example, IIRC, the moment you load COM or WinSock DLLs, your app stops loading snappily. Pretty much anything will load COM even without intending to.
Another chunk is IMM - the ctfmon process you love, for multi-language/keyboard support. ImmDisable(0) can make loading a bit snappier, but then good luck with keyboard switching and the like. It uses window hooks, which are slow Win32 calls as mentioned.
People think it's just a matter of writing plain Win32, but that's not the whole story, although it certainly helps compared to more heavyweight frameworks.
waboremo
Windows is especially bad at this due to so much legacy reliance, which is also kind of why people still bother with Windows. Not to claim that Linux or MacOS don't have similar problems (ahem, Catalyst) but it's not as overt.
A lot of the blame gets placed on easy to see things like an Electron app, but really the problem is so substantial that even native apps perform slower, use more resources, and aren't doing a whole lot more than they used to. Windows Terminal is a great example of this.
Combine this with the fact that most teams aren't given the space to actually maintain (because maintaining doesn't result in direct profits), and you've got a winning combination!
0xbadcafebee
One of the reasons is the whole "software is a gas" thing. As long as there is faster hardware, more memory, more storage, software will get slower, more bloated, and take up more space, just because a gas always fills its container.
But another reason is there's more people in tech who don't know what they're doing. More people who took a bootcamp and jumped into a job, or came from some other career and barely know how to use a computer, never used Linux/UNIX. Some newer roles have very specific niches, where they don't know much about tech, and then they're asked to write code, which they have almost no idea how to do. I've recently worked with colleagues who were contributing code, and getting in the way of building the product, who shouldn't have been within 10 miles of an IDE. And when the senior developers don't know how environment variables work, I weep.
guardiangod
1. Windows Defender anti-virus checking the binary and contacting MS' server for binary signing/black list
2. Kernel32 trampolines
3. All sorts of security mitigation techniques such as stack cookies setup etc.
4. Telemetry
5. Hardware accelerated GUI initiation vs 'dump everything to frame buffer in kernel GUI32 library'
6. Load fonts, graphics etc. that can work well beyond 640x480
7. Deal with the scheduler juggling hundreds of processes that let you from accessing winsock2 lib immediately, to have multiplex sound mixing, to system restore, all in the background.
mydriasis
Aloha
WinNT 3.51 was released in 1995 - the fastest PC in 1995 was either a Pentium or Pentium Pro at ~100 MHz - in 2000 a 600 MHz machine is likely a Coppermine PIII.
A fairly common amount of RAM in 1995 to Run WinNT would have been around 32 megs of ram, 64 megs would be especially generous. 128 megs is a high end workstation amount of memory.
The ATA interface also doubled in performance between 1995 and 2000.
There were significant security and stability improvements between NT 3.51 and Windows 2000 - particularly with changes to the driver model that increased stability. (even more so between 2000 and Windows 10/11)
qsantos
Except, that they are not, not at the time they are launched at least. And even if they were, we have a hundred-fold more compute power, with a hundredth of the latency for memory and storage.
Regarding security, it should have negligible effect in most cases. At least, effects should not be perceptible to the human mind.
It really is just a consequence of the way we develop software nowadays. We do not need to optimize programs to make them work at all, so we just do not. We work on new features, and we hire people who can churn new features.
And we decided to optimize for developer time, instead of user time. So, instead of painstakingly developing a Web site, a native application, an Android app, and an iOS app, we just push Web apps everywhere.
AlawamiAZ
beardog
It is not the main thing going on in this twitter post, but it does show a way modern computers feel slower than older machines.
GeekyBear
Dave's no excuses attitude towards performance and stability is sorely missed.
I know people who ran Windows Server 2003 as a client OS, which was the last version of NT that Dave was in charge of.
andsoitis
762236
c00lio
Programmer comfort, unified frameworks, higher level languages over user experience.
Focus on end users instead of professional users.
Stupider programmers and programming through "good enough", "everyone can code" and "salaries are too high, hire someone cheaper".
Computers getting cheaper, therefore users buying new machines to run software faster, instead of programmers trying to get stuff running fast on current hardware.
AdamH12113
On the other hand, a large part of the delay was due to the slow seek time of the magnetic hard drive (milliseconds). The CPUs only had one core, and RAM was both smaller and much slower. Modern SSDs make seek time negligible, ancient PassMark scores suggest a >10x improvement in single-core CPU performance, and there's been a >20x improvement in RAM transfer rate and a >40x improvement in RAM size. Residential internet bandwidth has seem something like a 100x improvement.
None of that hardware improvement seems visible in modern PCs, except for nicer graphics and (especially) higher-resolution displays. But comparing video games from ~2000 to video games today reveals just how small that graphical difference is in the OS/application space. MS Office was a lot more responsive in the early 2000s, too.
In the early days of Firefox, the developers bragged that every new release was smaller than the previous one. Maybe one day there will be a fad for more responsive software in general.
mo_42
On the other hand, I very much like the F-Droid store. There are so many useful and user-friendly apps. They work and stay like this for a long time.
I suspect the underlying topic here is money. Open source apps don't get much funding. So the developers need to focus on the essentials and get them right. On the other hand, subscription-based apps have a steady inflow of money. For some reason, they need to constantly work on these and add new features with marginal utility. I regret having updated some iOS apps. They were working perfectly fine in 2018 but have added bloat and bugs since then.
Tade0
In the past it was understandable, because those primitive 130nm, single-core CPUs had to keep spinning since performance scaling was still a relatively new thing back then.
Despite all the advancements in the field it seems like more often than not each of those cores is up to something at all times.
First thing I do with a new Android device is to limit the number of background processes. This causes occasional crashes of some apps, but the difference in general smoothness is noticeable.
Meanwhile my laptop draws 30W seemingly doing nothing in particular.
Launching HWiNFO halves that number which, if actually true, is properly insane.
convery
Sidenote, look up the ThinkPad 760 series, it had some really cool features. Raise-able keyboard so you could have it at an angle, physical sliders for sound and backlight, easy access to the internals and hot-swappable battery.
realo
In other words, a modern 2 GHz processor would have time to execute at least one instruction between the time photons leave the screen, and the moment they reach your retina. Probably more than one, with multicore pipelined processors.
And yet today we wait and wait and wait for Windows to open a simple program.
Indeed... what happened?
ibobev
kneebonian
That's what happened.
asciimov
Win9x was better, you could run a few more apps without too many issues. But blue screens were super common. But it was fairly responsive if you didn't have too much running.
Win2000, yeah it could be that responsive.
What stands out to me, is Windows is very responsive the less stuff that is running, even today. Once those older machines had to do anything else you had to wait.
Those old apps sat much closer to the metal. I can't imagine how many layers sit between windows apps today, worse if they off Electron.
dstaley
[1]: https://winmerge.org
whywhywhywhy
Resizing makes the windows flicker disgustingly. Even the mouse cursor changing to the resize widget often draws a large glitched cursor for a single frame on every windows machine I’ve used sometimes.
If someone ever fixed this trash and made the OS feel solid and not a flickering glitchy mess I’d be in their debt.
Melatonic
Seriously recommend trying it out - more responsive than any OS I have ever used - even a lean running Ubuntu or OSX
me551ah
Solvency
HeavyStorm
A month ago I realized that my RAM was topping at 95% capacity when running the usual suspects (vscode, edge, etc). I bought an additional 16Gb, and I'm already at 55%.
Now, RAM optimizations aside, what the hell...
I blame us, or the current generation of us. Performance (CPU and RAM) is so cheap that I feel we don't optimize anything anymore. Many of my colleagues don't have a clue on how to run a profiler, let alone actually optimize a system.
And we are always turning to more productive yet less performant platforms such as nodejs etc. It's a valuable trade off, but maybe we have gone all to an extreme...
jamal-kumar
II2II
calibas
And that's why modern hardware keeps getting faster while modern software stays the same speed (or slower).
stcroixx
malexw
Around that time, whenever a new BlackBerry device was rebooted, it would take about 45 seconds for the OS to fully boot and become usable. I'm making up the actual times in this story because I can't remember the exact details now. Like in this video, the oldest devices would start up nearly instantly, but the boot sequence for modern devices was agonizing. Especially when you were an engineer trying to run a test that required rebooting the device!
One day, a pair of engineers finally became annoyed and curious enough to look into it and profile the problem. They found that a substantial portion of the boot time was spent parsing XML files that contained descriptions for device themes - that is, information about colors, icons, and text styles that users could choose from to customize their device. Something like a full 15 seconds was spent just on this one feature as part of the boot sequence!
So what happened? I suppose that no other engineers felt they had the responsibility or the time available to look into the long boot times until that point. But imagine being an engineer at a company like Microsoft, and one day saying to your manager or product manager: "Hey, can I spend a week on understanding why it takes a full second for Terminal to boot on Windows and see if we can speed that up?" How many managers are going to be enthusiastic about that when they're staring down a kanban board with enough tasks to fill 4 quarters?
The only reason these engineers at BlackBerry were able to look into the bootup times was because they didn't have to answer to anyone responsible for product. The team lead for this team at the time was "Engineer #2" at BlackBerry who had written all the apps for the first devices. His team was given permission to pursue whatever ideas or prototypes interested them, so they had the breathing room to chase leads like this that wouldn't necessarily pay off.
So part of the answer is that I don't think we as an industry are prioritizing performance. Once the performance is good enough, it's time to ship and move on to the next feature. But the other side is that we're building in more dynamic behaviour to our software. More customization, more flexibility, more behaviour that's defined at run-time. And this all probably makes software more useful and makes it easier for engineers to build more complex software. I think it's a similar kind of trade-off to choosing between python or Rust for a tool you're working on. What kind of performance do you need, and what kind of developer experience do you want?
raldi
cmiles74
I wonder if the 600MHz machine in this video is fitted with an SSD of some sort, this would load applications far faster than the average hard drive from 1998.
dale_glass
First, he's probably running those OSes on a monster of a machine, relatively speaking. Stuff is snappy on my desktop too, which has a PCIe4 NVMe drive and 128 GB RAM. Chromium, which is a huge and very complex application starts up in maybe a second or less.
When you're doing old school computing today it's easy to max out the specs to a point that would be unrealistic in that time. You can put 128MB RAM into a machine when most people in the day might have had 16MB. NT4 is from 1996, and that machine is from 2000, so seems likely. I remember computers back in the day. Windows 2000 ran slowly on the hardware I had.
Second, modern software does way more in the name of convenience. Eg, nobody really uses notepad. We use VS Code for instance, which is an enormous application, the sort that would have seriously challenged a computer back then.
And really everything grew in the same manner. Discord is big, but Discord draws its own widgets and includes a web browser. If you did Discord with native widgets, plain text and without all the fancy stuff like animated emoji and special effects, it'd be much lighter and faster to start too.
MagicMoonlight
Compare that to Mint which looks exactly the same as Windows and now runs 100% of Windows games and it’s just unfair. It’s like running candy crush in a barrel.
dathinab
Linux also opens apps instantly, at least for me and if you ignore that some app after being opened instantly don't get instantly ready to work.
But that isn't fault of the OS.
Through some OSes used some tricks to hide this loading time.
A good example is cold starting a web browser. Modern web browsers have to handle so much that just loading the amount of code they have all at once can lead to a noticeable delay. I mean e.g. the network code your browser runs is likely a few hounded to thousand times more complicated then what you put into a simple HTTP server. There is also the rule of thumb that the difference between something working in your use-case and it working in as many situations as possible for as many people as possible might look small from an external POV but in general comes with an explosion in complexity and code. And for browsers that is not just the case for networking but also rendering HTML+CSS, executing JS, storage handling, window handling, handling boundaries and security, extensions, caching, input handling etc.
elenaferrantes
p0w3n3d
And another thing: security. Security on old Windows was poor. There are many things that need to be taken care of, but they used to not exist or were simply unsafe. This is another thing, one need to keep in mind, if one wants to just install windows 7 or XP and play games (as I did)
Zuiii
Instead we get apple, google, microsoft, and gnome/qt all doing their incompatible thing.
So until they do, expect the beatings to continue. /shrugs
roody15
Snow leopard with a intel dual core 4 gigs of ram and a SSD performs as well as a MacBook 2019 i7 running 11.x Monterrey.
So much unnecessary processes in the background IMO
Keep it simple stupid whenever possible
throw7
With an old machine, you can feel the "slowness" doing a similar test with something coded in assembly vs compiled.
The reality is, to be fast, do less.
rfwhyte
SirMaster
Also they added desktop compositing animations.
Opening a command prompt or mspaint is not exactly demanding and opens instantly on modern computers too when all desktop compositing animations are turned off.
chungy
Windows 2000: Everything opens instantly, no delays. Felt nice.
Windows XP: Noticably more sluggish than Windows 2000.
They've never recovered.
cptskippy
If you search the startmenu for "advanced system settings" it will pull up a control panel era System Properties app with an Advanced > Performance option. Turning off visual effects there dramatically increases responsiveness.
kobalsky
ynniv
Joeri
Windows 2000 was quite the hog compared to NT4 and all it added that I had a use for was USB support. I think by that point Dave Cutler was no longer running the show and windows performance slowly started degrading.
oofbey
martythemaniak
jmmv
It's pretty funny how a pair of crappy videos I recorded in 5 minutes have gone viral and landed here. I obviously did not expect that this would happen and is why I didn't give a second thought to the comparison. There are many wrong things in there (including inaccuracies, as some have reported), and Twitter really doesn't give room to nuance. (Plus my notifications are now unusable so I can't even reply where necessary.)
I don't want to defend the "computers of 20 years ago" because they sucked in many aspects. Things have indeed gotten better in many ways: faster I/O, better graphics and insanely fast networks are a few of them, which have allowed many new types of apps to surface. Better languages and the pervasiveness of virtual machines have also allowed for new types of development and deployment environments, which can make things safer. Faster CPUs do enable things we couldn't do, like on-the-fly video transcoding and the like. The existence of GPUs gives us graphics animations for free. And the list goes on.
BUT. That still doesn't mean everything is better. UIs have generally gotten slower as you can see. There is visible lag even in fast computers: I noticed it on a ~2021 Z4 workstation I had at work, I noticed it on an i7 Surface Laptop 3 I had, and I still notice it on the Mac Pro I'm running Windows 11 on (my primary machine). It's mind-blowing to me that we need super-fast multi-core systems and GBs of RAM to approach, but not reach, the responsiveness we used to have in native desktop apps before. And this is really my pet peeve and what prompted the tweets.
Other random thoughts:
* Some massive wins we got in the past, like the switch from HDDs to SSDs, have been eaten away and now SSDs are a requirement.
* Lag is less visible on macOS and Linux desktops as they still feature mostly-native apps (unscientific claim as well).
* The Surface Go 2 isn't a very performant machine indeed, but note it ships with Windows 11 and the lag exists out of the box, so that makes it enough to qualify as a fair comparison. The specs I quoted were wrong though because I misread them from whichever website returned them to me. I don't care though because this is the experience I get on all reasonably-modern machines.
* Yes, I had opened the apps in both computers before running the video, so they were all cached in memory (which puts the newer system in a worse light?).
* One specific thing that illustrates the problem is Notepad: the app was recently "rewritten" (can't recall exactly what the changes were). It used to open instantaneously on the Go 2, but not any more.
* NT 3.51 wasn't truly fair game because it was years-older than the machine. But if you scroll down the thread you'll see the same "test" rerun on Windows 2000 (released same year as the hardware).
I might come back to extend the list of random thoughts. A proper follow-up blog post would be nice, but I'm not going to have time to write one right away.
vondur
refurb
Of course there are plenty of new features, but I don't use them.
[deleted]
matwood
wordsarelies
We say that today, and remember the best part of the experience... but we do forget, it was all at the mercy of your (maybe if you're lucky) UltraATA/33mhz bus.
garganzol
phendrenad2
Regardless, to answer "what happened?", people started demanding more from apps (dark mode, UI parity with web editions, rapid prototyping, simple development, cross-platform) and it became cheaper to use Electron (or Qt, or WinForms) than simple win32 calls.
classified
pushedx
Especially due to the mechanical disk, everything seemed to take 2 to 10 times longer than it does today the first time it had to be done after a reboot, and if physical memory was exhausted and the OS started swapping, forget it, you might be staring at an hour glass for multiple minutes to open a web browser or something of the sort.
I love SSDs and multicore machines of today.
majormajor
They should probably run some sort of antivirus too; this is built-in for Windows now, ya? That'd be my first guess for the small programs. My memory of those days doesn't feel any faster than today, but I never had anything as top-of-the-line as a 600Mhz chip in 1999, more like half of that.
lionkor
[deleted]
[deleted]
stavros
Here's a much more apt comparison (still really snappy):
https://twitter.com/jmmv/status/1672073678102872065/mediaVie...
reportgunner
elzbardico
chemmail
EVa5I7bHFq9mnYK
guestbest
kaivi
I have been running a bare XMonad for a couple of years with `xset r rate 300 40`, and it's okay but far from perfect. The WM seems to process its mouse events with a delay sometimes, and often focuses the wrong window whenever the mouse pointer moves.
sys_64738
justinator
cmrdporcupine
Yes, input latency back then was far better. But actually launching things came with appreciable pauses. Because disks back then _sucked_.
markus_zhang
Of course I'm not using any heavy duty applications, and I only play classic games for which even a Pentium is a bit of overkill.
sodimel
bcon
bitwize
Put Windows 2000 on that thing and see if it runs just as well.
ankurdhama
jokoon
NEVER FORGET Wirth's Law:
https://en.wikipedia.org/wiki/Wirth's_law
Wirth's law is an adage on computer performance which states that software is getting slower more rapidly than hardware is becoming faster.
My main suspicion is that OS have some kind of agreement with hardware vendors under the excuse of "it's new innovation which requires more CPU power". It's a hand in hand system where you need new software for the new hardware AND VICE VERSA.
It is veeeery hard to prove it, but it's similar to house appliances using designs and parts that wear out easily. Capitalism and growth DICTATES that it must sell, so it's impossible for a company to survive if it produces durable stuff. It's economically impossible to compete.
It's how the whole industry works (part manufacturing, etc), so it's not possible for a company to go against it. Capitalism cannot allow it.
HumblyTossed
idonotknowwhy
Using windows 10+ is infuriating with all the ui latency.
luciusdomitius
hahajk
My 2 year old HP laptop running Windows, on the other hand, runs the way we're thinking about.
mehh
wkat4242
But yeah responsiveness does not seem to be a design goal anymore these days.
metalforever
bee_rider
navjack27
bityard
edu
wellanyway
29athrowaway
Now, loading screens are everywhere. Like the Atari + cassette era.
vasili111
sneak
Also all of the support APIs and libraries for text editing and image display are orders of magnitude more complex now: eg Notepad supports unicode and emoji.
Zardoz84
kgbcia
Dwedit
nunez
Windows 11 min specs: 1GHz 64-bit CPU, 4 GB RAM, 64GB disk space.
This is a horribly unfair comparison. We were complaining about systems being slow AF back then too. (Insert _turbo button_ meme here)
notorandit
jeffbee
datavirtue
darksim905
andrewstuart
How many applications were tested?
nojvek
themitigating
pacifika
[deleted]
x3874
deadletters
roomey
Why not use something faster? I get no lag with xfce
I was watching Halt and Catch Fire and in the first season the engineering team makes a great effort to meet something called the "Doherty Threshold" to keep the responsiveness of the machine so the user doesn't get frustrated and lose interest. I guess that is lost to time!