末尾呼び出し最適化
2012年5月15日 (火) 02:04時点におけるimported>Administratorによる版 (ページの作成:「'''末尾呼び出し最適化'''(Tail Call Optimization、TCO)とは、ある関数の最後の処理が、別の関数呼び出しであれば、コストの...」)
末尾呼び出し最適化(Tail Call Optimization、TCO)とは、ある関数の最後の処理が、別の関数呼び出しであれば、コストの大きい関数呼び出しを消し去り、インライン展開してしまうことが比較的容易にできるよ、というコンパイラの最適化手法のひとつである。
たとえば、x86のニーモニックや.NETのCILであればCALLとなっている部分をJMPなどに置き換えれる。
プログラマーが最適化と称してgoto文を使いまくり、仕舞にはmain関数一本のプログラムを作った日には偉い人たちからボロクソ叩かれるが、その半分をコンパイラに任せると偉い人たちも怒らないので、コンパイラが容易に最適化ポイントを認識できるようにプログラムのソースコードを書くときに留意しておきましょうという話でもある。
末尾呼び出し最適化のなかでも、最強に威力を発揮するのは再帰であり、末尾再帰最適化という言葉まである。やってることは基本的に末尾呼び出し最適化と同じである。
関連項目
参考文献