- 110 名前:はちみつ餃子 mailto:sage [2021/06/25(金) 00:17:11.72 ID:/YhIejlL.net]
- >>107
プログラミング言語 Scheme の仕様だと >>104 のようなパターンは末尾文脈の定義にあてはまるし 末尾呼出し最適化が適用されることが保証されるから、 現代的な言語処理系で最適化できないとは信じられないんだけど、 実際にRust コンパイラに >>104 を与えたときにループに最適化はしないの? Rust のコンパイラの使い方に不慣れでアセンブリコードの出力のさせかたがよくわからん……。 ほぼそのまま C のコードに書き換えてみたら GCC ではジャンプに置き換えたコードが生成されるみたいだし……。 (ちなみに GCC では末尾呼出しになっていなくても一部の状況では再帰をループに変形できることがある。) Clang だとループを全部 unroll しやがった!
|

|