Live data from Hacker News

There's no reason for software to be slow anymore

danluu.com

401–410 of 529 posts

Re: There's no reason for software to be slow anymore

#401

Earlier quoted context omitted.

Surely the biggest cause of slowness is doing more stuff. We don't turn faster hardware into faster programs, we turn it into more program. AI isn't going to change that. We'll just get even more program because the optimisation has freed up space for that. Unfortunately most of the time, the more program isn't for our benefit. I note that by far the heaviest program I use is my web browser. The one thing I don't get…

A browser isn't really a program any more but a platform for running other programs. Like how javaw.exe is really Minecraft, firefox.exe is really YouTube. Go to about:processes to find more detail.

The point is, if I want to edit a text file, I don't need to use eclipse. I can use something that hasn't added loads of features. I don't need to use whatever Adobe product, I can use some paint app.

If I want to watch streaming videos, I don't have a choice about how I do that.

Fine Firefox is basically a bloated YouTube app. That doesn't change the fact that it is inefficient (from the pov of my CPU) for doing that.

Re: There's no reason for software to be slow anymore

#402
post #44

One of the biggest causes of slowness is just waiting for web requests. The fact that so much software is either online or built using the same stack even if it isn't, puts all that software in this blocked/waiting state constantly while using it. Anyone not in the US feels this even more since so much online is US hosted, 300ms for every little interaction adds up quick. If your software has the affordance of a wait…

There’s no reason for (most) software to just be hosted in the US anymore.

We as an industry should use AI to enable a standard of software quality that was previously uneconomical.

Re: There's no reason for software to be slow anymore

#403
No there's a simple reasons actually: we have surrendered entirely to web based apps & the resulting ad bloat.

You used to buy a computer, install an OS, buy apps and run them. Neither the OS nor the apps didn't suddenly degraded themselves with "free update" that were developed targeting newer & newer machines. You bought a new computer when new software you wanted to buy wouldn't run fast enough on it, OR the computer died.

Nowadays, you buy a new computer when the same software you've been running for years or the OS itself that demands to be updated "free" makes your machine intolerably slow.

Funny how that all worked out.

Re: There's no reason for software to be slow anymore

#404

Earlier quoted context omitted.

I agree and see this as a side effect of a subtler thing. As people shall be replacable, software is designed and subtly mimics the organization's communication patterns. Features are cut up into the tiniest pieces with clear separation from the start (at least its claimed), and over time whatever change or feature seems overly complicated, won't be done or won't be done in a sane manner because its uneconomical. You…

Oracle: "Do not fall into the trap of anthropomorphizing Larry Ellison. You need to think of Larry Ellison the way you think of a lawnmower. You don’t anthropomorphize your lawnmower, the lawnmower just mows the lawn - you stick your hand in there and it’ll chop it off, the end. You don’t think "oh, the lawnmower hates me" – lawnmower doesn’t give a shit about you, lawnmower can’t hate you. Don’t anthropomorphize the…

[flagged]

Re: There's no reason for software to be slow anymore

#405
post #146

Next time you ask your AI of choice to build an app, please tell them to use plain language without frameworks at all and keep modules to a minimum (ie. node express, ejs and pg, nothing else) and you will see a huuuuge difference

And just use C.

Re: There's no reason for software to be slow anymore

#406
post #364
post #243

Earlier quoted context omitted.

This is kind of a shallow assessment of "slowness". Slowness is a feeling, not a fact. Network is slow as a rule relative to other parts of the stack, but it is not usually what contributes to the feeling that your software is slow. It takes a good amount of incompetence and arrogance to cultivate that particular experience.

Fair, it's shallow because I was succinct however, I do understand the problem space more in depth than this. But if I were to pick one single thing that would speed up the most UIs across the board, it would be poor handling of the UI in networked systems. As you noted, that doesn't mean eliminating them, it means handling the inevitable in a way that doesn't tank the UI feel.

True, dev environments are fast. One dev implements a wrapper with roundtrips, another integrates it into a UI and no-one stops to think if it'll have terrible lag in practise. They don't notice so even if there's a ticket it'll starve and end up WONTFIX.

Somehow I don't think I'm the only one who presses a button and when nothing happens presses it repeatedly until something happens, or I kill the app, or even power off whatever piece of shit computer I'm using.

Re: There's no reason for software to be slow anymore

#407

Earlier quoted context omitted.

The UI threading model is usually not the problem. The problem usually comes from inappropriately arranging the systems of record such that information needs to be communicated beyond the scope of one computer in order to satisfy a single logical request. Moving information between physical processors tends to be significantly more expensive than local computation over that same information. JSON serialization is a r…

Networks are much faster than you think, it's networked software that tends to be slow. 10 GbE is now table stakes, you should fire any vendor who can't offer it. I certainly don't require your internet connection to be 10Gbps, or all your desktop machines, but your internal server network should be if you're building a new one in 2026, because there's no excuse not to any more. > Information theory doesn't care how…

The majority of companies are building their stuff entirely in the cloud, where network speed scales with the instance size. I have had to explain this to multiple engineers at multiple companies, who are surprised to learn that network bandwidth isn’t unlimited.

As to your database comment, IME most of the time the bottleneck is the ORM and/or language. The amount of work an ORM does to generate a representation of a row is frankly shocking. Not understanding the cost of context-switching is the language half of it: Python, of course, is single-threaded, but you can use greenlets to cheat, because they’re I/O bound — except for all of them serializing behind a single process handling serdes for the queries.

Re: There's no reason for software to be slow anymore

#408

Earlier quoted context omitted.

If we stored the edges (links) and nodes (pages) separately, rather than requiring you to blindly run a node's code just to discover what its edges might be, then you could skip the prediction and instead pre-cache the next hop for all edges just in case you follow one. You could even do this to two or three hops. This might seem wasteful, but if the web were content addressed instead of server addressed you could th…

We have that, it's called an tag.

Its not stored separately, so:

1. You need write access to the server if you want to add one

2. The server could change its behavior at any time and there's no way to know that caches now need to be invalidated

3. If something goes wrong with connectivity or name resolution, there's no fallback since the authoritative thing was not something durable like a trusted human via a public key but rather an ephemeral thing: a named server which has pinkey promised to stay online.

It asks the user to treat a server like a trustworthy source of perisisant data.

But there's no reason to couple these kinds of trust. The skills necessary to persist and traffick data are orthogonal to being trustworthy about content. Coupling them creates needless load on single sources of failure which are simultaneously single points for corruption to target.

Trust people, not servers. Use digital signatures to validate that what you're seeing came from those people.

tags are the opposite of this. They encourage us to trust servers by name, which isn't really working out.

Re: There's no reason for software to be slow anymore

#409
There was never any reason for it to be slow in the first place, yet here we are. In my view, we have slow software not because knowledge of optimization comes at a premium, in fact, most compilers do well enough at optimization that you can rely on them for at least acceptable levels of performance, assuming you choose effective algorithms for the task. Software is slow because other incentives are stronger than performance, and people more often make sets of technical choices that produce slowness (for example, opting for ease of development and portability over performance (see electron)).

I don't think LLMs are going to change this. They won't change what companies and individuals value. Yes, they can enable those interested in performance to write even more performant software, more easily, but they won't convince the people who aren't prioritizing performance in the first place to prioritize performance. This ship sailed a long time ago.

Performance was prioritized when it was necessary due to resource limitations. As soon as those lifted, performance was deprioritized in favor of other properties. I doubt the balance will really be restored until limitations re-emerge or consumers put pressure on companies around performance. Unfortunately, the past few years have shown that the latter is unlikely to work.

Re: There's no reason for software to be slow anymore

#410
post #208

Earlier quoted context omitted.

Can next.js give me a page's links without requiring that I execute any code that I didn't have prior to visiting that page? The .js part makes me think not.

Speculative Rules API { "prefetch": [ { "source": "list", "urls": ["/checkout.html", "/thank-you.html"] } ] }

Right, but my browser doesn't interpret that. The site tells me to run some code which interprets it.

I should be able to get the lay of the land without trusting the site enough to blindly execute whatever code it points me at. It's needless attack surface.

Also it's not really pointing me at data, its pointing me a certain kinds of requests which I have to trust will be responded to consistently. I'd much rather have a hash so if I have that data lying around I can just forgo the request entirely and use what's present locally.

Post reply on HN