软件性能优化已不再昂贵

There's no reason for software to be slow anymore

过去,像实现 JIT 编译器或构建高性能游戏 AI 这样的优化工作,往往因成本过高而被搁置。如今,LLM 的出现彻底改变了这一局面。我通过让 AI 代理在几分钟内完成原本需要数天甚至数周的工作,成功优化了 FRE 正则引擎和 Azul 游戏 AI。从多线程算法到复杂的调试验证,AI 将优化的时间成本降低了成千上万倍。这意味着,曾经只有大型项目才负担得起的极致性能优化,现在任何人都可以尝试。我们不再需要为了性能而妥协,软件慢下来的理由已经不复存在。

过去那些因为太昂贵而不值得进行的优化,现在任何人都可以通过输入几句话来完成。
  1. dkersten

    导致软件缓慢的最大原因之一仅仅是等待网络请求。事实是,如此多的软件要么是在线的,要么即使不是在线的也使用相同的技术栈构建,这导致用户在使用这些软件时,它们始终处于阻塞/等待状态。

    对于非美国用户来说,这种感觉更加强烈,因为绝大多数在线服务都托管在美国,每一次微小的交互增加 300 毫秒的延迟,累积起来非常快。

    如果你的软件在许多 UI 控件上都设计了等待对话框或加载轮盘,那么你就是在默认假设软件会被阻塞的前提下进行构建。即使你正在构建基于 Web 的东西,也要问自己这是否真的必要,或者是否可以采用不同的构建方式来避免 UI 持续阻塞。

  2. ehnto

    我一直在做一个类似的由智能体(agent)辅助设计的正则表达式项目,叫 SafeRE:

    https://github.com/eaftan/safere

    https://eaftan.github.io/safere-intro/

    我的项目是针对 Java 的,旨在达到生产级标准。首要目标是保证线性时间行为,以防止 ReDoS 攻击。我和我的合作者最近一直在优化它,试图在性能上超越原生的 RE2。

    事实证明,优化工作非常适合智能体循环。你有具体的验收标准(必须在基准测试案例上显示出有意义的改进,必须通过测试)。智能体在使用分析器(profiler)和反汇编器(disassembler)等工具方面非常、非常擅长,比我强得多(而我在这行干了 20 年)。它还能掩盖那些我需要花很长时间才能学会的东西,比如 Java 中处于孵化期的 Vector (SIMD) API 是如何工作的。我理解这个概念,但要理解 Java 的实现需要我花上一段时间。而智能体可以直接阅读文档然后开干。

    关键在于创建一个良好的基准测试套件,并确保智能体不会发布过于狭隘或过于针对基准测试案例的优化。你还需要一个非常强大的测试套件,以确保不会在正确性上出现回退。SafeRE 拥有数十亿个测试用例;其中几百万个在 CI 上运行,其余的按需运行。

  3. eaftan

    这段话可以简化为:

    > 在程序空间 S 上,一个带有可执行优化目标的随机搜索过程,只能维持或改进该目标。

    这就是超级优化(superoptimization)。我们从 80 年代就知道这一点(Massalin,STOKE 是较新的:https://github.com/StanfordPL/stoke)。唯一的创新之处在于,现在的提案者(proposer)有了大语言模型(LMs)的加持,能力强得多了。

    此外,有很多原因导致由智能体编写的软件运行缓慢:

    - LMs 在开箱即用的情况下,仍然不擅长数据或硬件导向的设计。因此,如果你从事任何严肃的创新工作,而不仅仅是移植一个极其成熟、负载特征也极其明确的程序,你将不得不花费数小时去追踪糟糕的内存分配决策(参考 TigerBeetle 为什么不用智能体),而这往往是万恶之源(在你采取任何进一步措施之前)。

    - 你需要的用于实现真正高性能的“旋钮”(knobs),在 LMs 擅长的语言中几乎是无法触及的(即使是 Rust 也需要一种默认语言不强制执行的纪律)。当你进入底层领域时,你是在用上下文消耗来换取对这些杠杆的访问权。而且这些杠杆也是“软”的:你会发现自己在编写一堆技巧和工具,试图强制执行这种纪律。

    现实情况是,要想从智能体那里快速获得高性能代码,你需要知道如何编写高性能代码(并且你需要知道如何将用于为此类事物创建验证器的信息呈现出来,以便……)

  4. mccoyb

    “LLMs 正在导致缓慢、臃肿的代码,一旦它们用超级优化的汇编重写一切,就会被打脸。”

    这个人根本不懂如何编写高效代码。我几乎可以用任何语言(除了少数几种例外)写出性能优于“超级优化汇编”的代码。编写高效代码不在于语言,通常也不在于最好的算法(但有时确实如此)。关键在于优化内存和缓存的使用。而这与作者所写的任何内容都正交。此外,LLMs 在优化内存利用率方面非常糟糕。训练数据中做得好的代码太少,而做得差的代码实在太多了。

    作为证明,我简直能感觉到 Web 正在变得越来越慢,我敢打赌很多人也有同感。

  5. hunterpayne

    ChatGPT MacOSX 是我机器上唯一会定期崩溃的软件,原因不明,其内存占用会飙升至 50 GB。

    而这款软件是由全球薪资最高的软件工程师们打造的,他们还能完全访问世界上所有的 LLM 算力。

  6. chvid

    我用电脑已经 40 年了。它们并没有变得更快。我们在 1989 年建造的核电站计算机系统必须在 1 秒内呈现选定的屏幕。我不认为我今天使用的任何应用程序能做到这一点。

  7. intrasight

    对我来说,比较一直是在 3DsMax 和 Blender 之间。同类软件,同类功能,但 Blender 要快得多。

    架构决策一直都很重要。

  8. jjcm

    我现在明白了,大多数软件之所以慢,是因为共驻(co-tenancy)问题需要控制资源,或者仅仅是因为它们被安全地隔离在竞争之外。例如,GitHub 属于前者:你可以自己搭建一个质量更高的 Git 托管和 CI/CD 系统,因为你可能根本不会使用它的社交功能。我认为像 Apple 的五指内捏手势这类东西属于后者。以前你可以这样做并开始打字,但现在它需要先渲染动画等,然后才能注册按键。这款软件的慢是因为你在 MacOS 中无法替换它。

    但所有这些都会随着时间改变。地狱就是别人的软件。

同日更多故事

2026-08-22