HN Debrief

There's no reason for software to be slow anymore

  • AI
  • Programming
  • Developer Tools
  • Infrastructure
  • Open Source

The post argues that software should no longer be slow by default because LLMs can now do a lot of the expensive, fiddly optimization work that used to require rare specialists. Dan Luu’s concrete example is regex performance. Give an agent a clear objective, a benchmark harness, and tests, and it can grind through candidate changes much more cheaply than a human team would. The core claim is not that models magically invent brilliant new algorithms on demand. It is that they make “good enough to be worth trying” optimization much cheaper, so many code paths that were never worth tuning before now are.

Treat performance as a product and architecture choice, not a last-mile coding trick. If you want faster software, start by cutting unnecessary network hops and framework overhead, then use agentic optimization on well-benchmarked hot paths instead of expecting models to rescue a slow system design.

Discussion mood

Mostly agreeing with the article’s narrow point that LLMs can help optimize bounded, benchmarkable code, but skeptical of the headline. The dominant mood was frustration that real-world slowness usually comes from architecture, network dependence, framework bloat, and business incentives, none of which agents fix unless a team already cares enough to change them.

Key insights

  1. 01

    LLMs copy existing optimizations better than inventing new ones

    They are strongest when they can read mature code, benchmark against it, and transplant known tricks into a weaker implementation. That is enough to rescue a huge amount of mediocre software, but it still falls short on code that is already highly tuned or needs a genuinely new idea. The practical ceiling is not “can optimize anything” but “can rapidly close the gap to known good patterns.”

    Use agents first on obviously slow code and with strong reference implementations nearby. Do not expect them to discover the next deep systems trick without heavy human guidance.

      Attribution:
    • josephg #1 #2
    • jkercher #1
    • fc417fc802 #1 #2
  2. 02

    Backend latency is usually architecture debt

    The missing 300 milliseconds are rarely explained by physics alone. They are usually burned in ORMs, serialization, database round trips, cloud instance networking, and service fan-out that forces one logical request through too many layers. That reframes performance work from micro-optimization to system simplification.

    Profile request paths end to end before tuning code inside any one service. You will often get bigger wins by collapsing hops, denormalizing selectively, or moving hot reads closer to the app than by rewriting a function.

      Attribution:
    • sgarland #1
    • inigyou #1
    • NoMoreNicksLeft #1
    • thbb123 #1
    • TylerE #1
  3. 03

    Cloud control often creates avoidable WAN lag

    Products like Sonos got slower not because local networking is hard, but because companies rerouted control paths through their own cloud. That adds latency to interactions that used to stay on the LAN, and it also reveals the business motive behind some slowness: centralization, lock-in, and monetization. Once that decision is made, the user pays for it in responsiveness.

    If your product talks to hardware or local state, make local paths first-class and keep them working without the internet. Treat cloud-only control as a product risk, not just a technical shortcut.

      Attribution:
    • sgarland #1 #2
    • ryandrake #1
    • fingerlocks #1
    • don_esteban #1
  4. 04

    Offline fallback often waits on pointless timeouts

    A lot of apps are not truly offline-first, but they fail at something simpler and more embarrassing. They already have usable local data, yet still block the UI while remote requests time out. That turns a workable fallback into a 30-second stall and makes the product feel broken in exactly the conditions where users need resilience most.

    Audit every screen that should function with cached data and simulate bad connectivity. If local data exists, show it immediately and label its freshness instead of waiting for the network to fail first.

      Attribution:
    • ttoinou #1 #2
    • vidarh #1
  5. 05

    Agentic optimization works when the harness is real

    The strongest positive reports came with concrete tooling, not vibes. People got big wins by having the model build rigorous microbenchmarks with JMH, use async-profiler and Java Flight Recorder, inspect allocations, and then iterate against that feedback. The model was useful because it could drive mature tools quickly, not because it had mystical performance intuition.

    Invest in repeatable profiling and benchmarking before you ask an agent to optimize. Good harnesses turn models into force multipliers, while weak harnesses just automate cargo cult changes.

      Attribution:
    • stickfigure #1 #2
    • eaftan #1
  6. 06

    Specs and benchmarks do not replace performance judgment

    Even among people getting value from agents, the hard part stayed human. Writing an implementation spec is not the same as specifying the right allocation strategy, data layout, or performance envelope. Models can execute a target faithfully and still deliver the wrong system because the target itself missed what matters.

    When performance matters, specify resource behavior explicitly instead of assuming it will emerge from a functional spec. Add constraints for latency, memory, allocation patterns, and workload shape up front.

      Attribution:
    • mccoyb #1 #2 #3
    • embedding-shape #1 #2
  7. 07

    Org charts leak directly into system performance

    Several commenters tied slowness to Conway’s law and ticket-driven development. Systems get split to match teams, glue code piles up between ownership boundaries, and simple end-to-end improvements become too political or expensive to coordinate. The result is software that mirrors bureaucracy more than the machine it runs on.

    Put ownership around user-facing flows and latency budgets, not just components. If no one owns the full path, performance debt will accumulate at every team boundary.

      Attribution:
    • mawadev #1 #2
    • steffan #1
    • Lucasoato #1

Against the grain

  1. 01

    Agents already beat humans on some low-level work

    A few people pushed back on the blanket skepticism and said the latest models can generate assembly-optimized kernels, use profilers and disassemblers effectively, and iterate through benchmark loops faster than any individual engineer. In narrow domains with executable acceptance criteria, the practical results are already impressive enough that dismissing them as hype is outdated.

    Do not let architectural skepticism blind you to where this already works. For small kernels, parsers, SIMD-heavy paths, and other measurable hotspots, it is worth running serious bake-offs now.

      Attribution:
    • Aurornis #1
    • senderista #1
    • hiddencost #1
  2. 02

    LLMs may reduce the need for high-level stacks

    Some commenters argued that if models can reliably produce low-level code, then the old reason for choosing slower languages and heavy frameworks weakens fast. In that view, a lot of modern stack complexity exists to help humans move quickly, and if the machine does most of the implementation work, teams can afford to target Rust, C++, or plainer stacks more often.

    Revisit language and framework choices on new projects instead of defaulting to the old productivity stack. The best tradeoff may be shifting downward in abstraction while using models to absorb the extra implementation burden.

      Attribution:
    • rfgplk #1 #2
  3. 03

    Users do punish slowness, even if bosses ignore it

    One line of argument rejected the claim that the market does not care. Commenters pointed to long-standing evidence that added latency reduces engagement and increases bounce, especially once delays move from hundreds of milliseconds to multiple seconds. The problem is not customer indifference. It is that many internal decision makers still do not price performance correctly.

    Make performance legible in revenue and retention terms if you want it prioritized. Engineering arguments alone often lose, but user drop-off tied to latency can move roadmap decisions.

      Attribution:
    • 0xblinq #1
    • ltbarcly3 #1
    • paulhebert #1
    • asdfman123 #1

In plain english

async-profiler
A low-overhead profiler for Java and native code that helps identify CPU and allocation hotspots.
Conway’s law
The idea that systems tend to mirror the communication structure of the organizations that build them.
Java Flight Recorder
A built-in Java diagnostics tool that records runtime events such as allocations, garbage collection, and method activity.
JMH
Java Microbenchmark Harness, a standard toolkit for writing reliable Java performance benchmarks.
LAN
Local Area Network, a network covering a small area such as a home, office, or data center rack.
regex
Short for regular expression, a pattern language used to search and match text.
WAN
Wide Area Network, a network connection that spans larger distances, such as internet paths between cities or countries.

Reference links

Original and related essays

Optimization tools and prior art

  • STOKE
    Referenced as prior superoptimization work that predates current LLM-based optimization loops
  • karpathy/autoresearch
    Suggested as a starting point for automated research and optimization loops
  • async-profiler
    Recommended profiler for Java because it avoids safepoint bias

Offline-first and sync tooling

  • ourhearth.ai
    Toy demo of a local-first harness using CRDTs and a virtual file system
  • PowerSync alternatives
    List of tools for building offline-first apps, mentioned as practical alternatives

Web performance references

Performance impact on business

Formal methods and software correctness

  • Rocq proof assistant
    Mentioned as part of the family of tools for formally verifying program correctness
  • Isabelle
    Referenced as a theorem prover capable of formal verification beyond simple tests
  • Lean
    Listed as another proof assistant relevant to proving software properties