← Back to context

Comment by nunez

3 years ago

I don't know.

On one hand, lag is real. I rebooted my M1 Mac mini yesterday running Ventura, and while it only took a few seconds to boot to the desktop, it took, like, two minutes for it to stop beach-balling and finish initializing. (It was most likely waiting on network I/O to finish, but still.)

On the other hand, machines are faster than ever before while doing more than ever before, and apps are more flexible and change more quickly (largely in part to super approachable cross-platform frameworks like Electron). A few milliseconds of UI latency will bother almost no-one.

On the other _other_ hand, Julio's demo of using Windows 2000 on an time-appropriate machine is best case. I definitely remember waiting what felt like eons for lots of useful apps to load, like Office and Internet Explorer. (Remember when browsers had startup screens?)

He's definitely right about how far hardware has come since 1999.

The shift to Apple Silicon was even more transformational than the transition to SSD, IMO. Julio's right in that the shift to SSD was night-and-day, but going from an Intel Mac to an Apple Silicon Mac sped up literally everything you used to an insane degree AND you got 12+ hour battery life to boot.

This used to be an either-or kind of trade-off, and for Windows devices, it still is.

To wit: I used an Intel Mac Pro (the trash can) last week for some audio work, and that super expensive almost-server-class machine was _slower_ than my base model M1 Mac mini at home, while running (slightly) louder and hotter!

>On the other hand, machines are faster than ever before while doing more than ever before, and apps are more flexible and change more quickly

I suspect this would fall apart the instant you try to rigorously quantify it. Put an actual number on how much faster machines are, and put an actual number on how much more useful stuff is happening. I cannot imagine that all of the slowness could be accounted for. I doubt you'd even account for 10% of it.

>A few milliseconds of UI latency will bother almost no-one.

No, this mindset is a death sentence for good software. All it takes is a few people at each level of the stack making the same excuse. Five milliseconds here, three milliseconds there, ten milliseconds, surely nobody will notice. But it all adds up (or worse, it multiplies in some cases).

  • > No, this mindset is a death sentence for good software. All it takes is a few people at each level of the stack making the same excuse.

    To pile on to this, it's not just five milliseconds here and there in your application but its position in the rest of the system. Your application's 5ms regression is tested on an unloaded machine (for example). That means you lost 5ms on an unloaded machine with all its considerable resources available.

    That regression is very likely to be much larger in a loaded system where your process is contending for resources. On a loaded system your 5ms regression becomes a 20ms regression along with everyone else's 5ms regression. So now the user is sitting there wondering WTF is happening.

    There's a pretty good chance your GUI application will be running on a mobile device of some sort. This means it's running on a device with power limitations. The CPU might be vastly underclocked to save power or you could be running on an efficiency core instead of a more powerful performance core. Now your 5ms performance regression is possibly 100ms. A couple such regressions that "don't matter" on the 3GHz test desktop become significant on the user's laptop with 15% battery remaining that's clocked the CPU down to 600MHz.

    Performance regressions should always be a concern and testing should to encompass the pathological worst cases. Even if there's nothing you can do about performance regressions (that 5ms of work is exploit mitigations or something) they should at least be quantified and understood.

> On the other hand, machines are faster than ever before while doing more than ever before, and apps are more flexible and change more quickly (...). A few milliseconds of UI latency will bother almost no-one.

On the forking hand (distinct from your "other _other_ hand"), the "doing more than ever before" neatly cancels out "faster than ever before", which prompts a question: how useful is whatever it is our machines are doing now? Because one thing is clear: most of that extra work is not visible to the user. The increase in software capabilities is much, much smaller - nowhere near enough to explain where all the performance goes.

We could break the extra work into several categories:

- Support for better hardware - e.g. higher-resolution screens require more RAM (somewhat compensated by GPUs), and require higher-resolution assets to maintain (not even improve on) decent clarity, which has second-order effects on storage use (partially offset by compression) and CPU use on decompression (the price of offsetting storage use), etc.

- Security features - cryptography, secure protocols, isolation, sandboxing, etc. - those all cost CPU and memory.

- "Security" features - "real-time" malware scans (bane of my existence), shady anti-virus/firewall software (i.e. almost all of it), and various other parasites living off people's fear (or need for regulatory compliance), and convincing users to pay them with money, time and compute. Not (x)or, and.

- Legitimate new features - handling more type and variety of content, more advanced algorithms, etc. Continuous auto-saving and collaborative editing are two big and perhaps underappreciated generic advancements.

- ... ???

The first four items on the list don't seem to account for all the performance loss, especially for software that doesn't do things requiring modern security, and offers the same set of features as its equivalent 10 or 20 years ago. Often less features, even.

That last point, the "dark matter" of computing, needs more detailed study. We can guess a chunk of it is developer convenience, but that's not all of it either.

WRT. developer convenience - as a developer, of course I like it, but it's really getting out of hand - at this point, whatever I buy for myself by externalizing the cost on users, I still lose because I'm also the user of development tooling, and those developers externalize on their users too...

> I definitely remember waiting what felt like eons for lots of useful apps to load, like Office and Internet Explorer. (Remember when browsers had startup screens?)

I agree completely.

It's definitely disappointing that simple programs like Notepad and Paint are now laggy (I can reproduce the exact same lag on my 2-year old 16-core i7), but computing in general was SLOW back then.

Booting a computer often took over 5 minutes. I'd turn it on, prepare a drink and come back to the desktop partially loaded with a laggy 'wait' cursor waiting for my startup programs to finish loading. Launching larger programs such as Word took more than a minute in some instances. You're playing music AND want to open another application? Well that application will open 2x slower now due to lack of RAM.

I'd love to see a comparison of a current version of Word on a current machine opening vs Word 2000 on a 2000 machine.

  • Wow, I TOTALLY forgot how long it took to boot up machines back then! Windows 2000 was the worst about this!