Codexにテキトーに高速化を投げたところ、確かに高速化はしたけど、重要なチェック処理をスキップする修正が入っていた。ということがあった。自分は幸いにも(?)体験していないが、テストを通すように指示したらFAILとなっているテストをすべてSKIPに修正した、なんて笑い話はよく聞く。

最適化していてやたら早くなった時は別の問題を生んでいる、という経験則に Godblot’s law(ゴッドボルトの法則) という名前がついている。

Godbolt’s Law — if any single optimisation makes a routine run two or more times faster, then you’ve broken the code.

(ゴッドボルトの法則 ― 単一の最適化処理によってルーチンの実行速度が2倍以上向上した場合、そのコードには何らかの問題が発生しています。)

Godbolt’s Law — Matt Godbolt’s blog

AIツールが魔法のような最適化を行う、なんてことはない。ツールが発揮できる能力は、基本的に人間と同等である。想像の範囲外の最適化は、人間だろうがAIだろうが、おかしいものはおかしい。コード自体も生成するのであれば、なおさらテストとレビューが大事、という、学び

このページを書いた Matt Godbolt 氏はコンパイル・最適化の分野で著名なプログラマで、Compiler Explorerの創始者でもある。

ちょうど年末ポッドキャストCoRecursiveに出演していた。

But what I would like to, this is my thesis now, is that like, while it’s, you should have a layer of abstraction you are familiar with and you’re comfortable with, you should also have a decent understanding of the layer beneath.

So I think you should know one level well have a working knowledge of the level beneath you. And then fundamentally, this is like the, probably the strongest thing is be aware of the shape of the layer beneath that.

(しかし私が提唱したいのは、現在の私の研究テーマでもある次の考え方です。確かに慣れ親しんだ抽象化レイヤーを持つことは重要ですが、それと同時にその下層の仕組みについても一定の理解を持っておくべきだということです。 … つまり、自分のレベルよりも1つ下の階層について十分に理解し、実際に使いこなせる知識を持っておくべきだと思います。そして根本的に重要なのは、その下の階層の構造を認識しておくことです。)

これをホストのAdam氏は「マット・ゴッドボルトの経験則(Matt Godbolt’s rule)」と呼んでいた。