Loading article…
リーフルーチン、リーフサブルーチン、リーフ関数、またはリーフプロシージャとは、他の関数を呼び出さない関数のことです。コンパイラによっては、リーフルーチンに特別なプログラム最適化を適用して効率を高めることができます。例えば、リンクレジスタを使用して戻りアドレスをスタックにプッシュする必要をなくしたり、Berkeley RISCから派生した CPU アーキテクチャでレジスタウィンドウを割り当てないようにしたりします。[ 1 ]
「リーフ」という用語は、プログラムの呼び出しグラフにおけるリーフノードとしての位置を指します。
通常、ほとんどの非リーフルーチンは複数の関数を呼び出します。このような場合、呼び出しグラフにおける関数呼び出しの大部分はリーフルーチンへの呼び出しとなります。これは、二分木では非リーフノードよりもリーフノードの方が多いためです(すべての非リーフノードが2つの子を持つと仮定した場合)。したがって、リーフルーチンへの呼び出しの効率は、プログラム全体の効率に大きな影響を与えることがよくあります。