エージェントに「もっと速く」と頼み続けたら、Rustコードが最先端ライブラリを超えた
Writing Rust code that's fast by asking agents to make the code faster

LLMに「コードを良くして」と繰り返し頼むだけで、Rustコードが驚くほど高速化する——著者がOpus 4.5以降のエージェント型LLMを使い、UMAPやGBDT、MLP、テンプレートエンジン、Webサーバーなど多様な領域で検証した結果、適切なガードレールとベンチマークがあれば2倍から20倍の高速化を達成。ベンチマーク特化の「benchmaxxing」批判に対しては、多様な入力と品質ゲートで対処。プロンプトとベンチマーク結果も公開している。
現代のエージェント型LLMは、適切なガードレールと制約を与えさえすれば、現在の最先端アプローチよりも significantly 高速なRustコードを実際に書くことができると確信を持って確認できる。
HNでの議論
48- metalspot
Opus 5で低レベルパフォーマンス最適化をかなりやってきたけど、その推論はまだまだひどい。例えば、なんでCRCがこんなに遅いんだろうと思って、ハードウェア命令を使っているのかと聞くまでループを回し続けて、そしたら自分で手書きした実装を使っていると答える、みたいな感じでひどい。L1/L2/L3キャッシュのヒット率とその影響についての推論は、基本的に壁に向かってダーツを投げているようなもので、しかも部屋を間違えている。ベンチマークのフィードバックループを与えれば、そのうちたどり着くかもしれないけど、それでも低レベルのシステムエンジニアにとっては大きなアルファがある。彼らはこういうことがどう動くかを直感的に知っていて、今やその作業の99%を自動化できるんだ。
- lordnacho
こういうので素晴らしい結果を出している。最適化が行われるためのまともなフレームワークが本当に必要だとわかった。本質的には、測定ハーネスと、自分がやっていることへのある種の動機づけを提供するだけだ。
LLMの素晴らしいところは、あらゆることのチェックリストを持っているように見えることだ。「ホットパスでアロケートするな」とか「コアをピン留めするのを忘れるな」とか、いくつか挙げると、自分では忘れていたかもしれない項目をいくつか思いついてくれる。
最終的には、私と一緒にリスト全体を消化し、その過程で全ての測定を文書化してくれる。
でも、それはまだ経験によって導かれる。異常な数値を見たら、「ねえ、リリースモードでコンパイルするのを忘れてない?」と言うかもしれない。すると謝って修正してくれる。もし私が言わなければ、全てが間違っていることに気づかずに探求を続けるかもしれない。
- hombre_fatal
測定できるものであれば、LLMは最適化できる。
かつて、`sample`の結果とCPUプロファイラ/トレースをダンプするリポジトリコマンドと、現在変更されたgitワークスペースをHEADや任意のコミットとA/A + ABBA/BAABテストできるベンチマークツールを用意したら、LLMはただやるべきことをやるだけだった。
そして、それが私の自家製ターミナルがghostty/kitty/itermよりもはるかに少ないメモリで、しかもより高いスループットを持つ理由だ。
AIは、正しくパフォーマンスの高いソフトウェアを保証することがあまりにも簡単になった今、それを気にしない人々や企業をますます暴き出すだろう。以前は、そういうことをするのは少なくとも高コストで時間がかかり、専門知識を要した。
- espeed
「より良いコードを書いて」と頼み続ければ、LLMはより良いコードを書けるのか?
私にとっての鍵の一つは型の使用だった。関数がそれからしか生まれない証人を生成し、続行するためにそれを要求するTypestateや、エージェントが忘れないように文字列の代わりにカスタム型を使うnewtypeなどだ。また、線形型をシミュレートすることで、エージェントに車輪の再発明ではなく実装を使うように強制することもできる。型は最適化する対象がはるかに小さく、コンパイル時に大声で失敗する制約を提供する。
- jpadkins
ベンチマークを行い結果をループする最適化エージェントに報告する別のエージェント(セッション/インスタンス)を用意することが、カンニングを防ぐクリーンな方法だとわかった。ベンチマークエージェントにはカンニングする理由がなく、その目標はただ刺激されたときにベンチマークを実行することだけだ。
これは品質評価にも本当に良いとわかった。何かがどう作られたかのコンテキストを持たないエージェントに品質レビューをさせ、詳細なフィードバックをたくさんもらう。そしてそのレビューノートを実装者に返してフィードバックとする。これはエージェントに自己評価させるよりずっとうまく機能する。