PC 用のコードを書いている場合、どちらの方法でも意味のある速度の利点はほとんどありません。一部の組み込みシステムでは、すべてのローカル変数を避ける方が有利な場合があります。他のシステムでは、ローカル変数の方が高速な場合があります。
前者の例: Z80 では、任意のローカル変数を持つ関数のスタック フレームを設定するコードがかなり長くなりました。さらに、ローカル変数にアクセスするためのコードは、8 ビット命令でのみ使用できる (IX+d) アドレッシング モードの使用に制限されていました。X と Y が両方ともグローバル/静的変数、または両方がローカル変数である場合、ステートメント "X=Y" は次のいずれかとしてアセンブルできます。
; 両方が静的またはグローバルの場合: 6 バイト。32サイクル
ld HL,(_Y) ; 16サイクル
ld (_X)、HL ; 16サイクル
; 両方がローカルの場合: 12 バイト。56サイクル
ld E,(IX+_Y) ; 14サイクル
ld D,(IX+_Y+1) ; 14サイクル
ld (IX+_X),D ; 14サイクル
ld (IX+_X+1),E ; 14サイクル
コードとスタック フレームをセットアップする時間に加えて、100% のコード スペースのペナルティと 75% の時間のペナルティが発生します。
ARM プロセッサでは、アドレス ポインタの +/-2K 内にある変数を 1 つの命令でロードできます。関数のローカル変数の合計が 2K 以下の場合、1 つの命令でアクセスできます。グローバル変数は、格納されている場所に応じて、通常、ロードするために 2 つ以上の命令を必要とします。