アルゴリズム遅延
アルゴリズム遅延の要因の1つが先読み/前方参照(英: Look ahead)である。時刻 t {\displaystyle t} の入力信号 x t {\displaystyle x_{t}} を処理する際、時刻 t + N {\displaystyle t+N} の情報を利用することでより良い x t {\displaystyle x_{t}} の処理をできる場合がある。この先データアクセスが先読みである。先読みをおこなう場合、 x t {\displaystyle x_{t}} を処理するために x t + N {\displaystyle x_{t+N}} までの入力を待つ必要がある。つまりストリーム入力をとるアルゴリズムであれば、 N {\displaystyle N} サンプルの先読みは N {\displaystyle N} のアルゴリズム遅延をもたらすことになる。アルゴリズムを設計する際には、先読みで得られる出力の質向上と遅延増大のトレードオフを理解する必要がある。
時刻 t − N {\displaystyle t-N} すなわち過去の信号を後読み(英: Look behind)することは一般にアルゴリズム遅延へは影響しない。なぜならストリーム入力であっても過去の入力は既に手元にあるからである。 N {\displaystyle N} を大きくすることはむしろ処理量の増大による処理遅延と質の兼ね合いになる。
ブロック末端 x t + h {\displaystyle x_{t+h}} の視点でみると取り込まれた瞬間に処理されるためブロック処理のアルゴリズム遅延は0である。ブロック単位でみた遅延は最大値たる h {\displaystyle h} になる。
N > h {\displaystyle N>h} の場合、ブロック処理を出力の視点でみると、ホップ長 h {\displaystyle h} 分の出力を一括で出力している。 N > h {\displaystyle N>h} で出力長以上の入力を取りこんでいるということは、ブロック内での先読み/後読みをおこなっていることになる。つまり t {\displaystyle t} ~ ( t + h ) {\displaystyle (t+h)} を出力するために ( t − b ) {\displaystyle (t-b)} ~ ( t + h + a ) {\displaystyle (t+h+a)} を入力している( N := b + h + a {\displaystyle N:=b+h+a} ) 。アルゴリズム遅延に影響するのは先読みであるため、ブロック単位でみたアルゴリズム遅延は h + a {\displaystyle h+a} になる。
またブロック処理と先読みを組み合わせ、ブロック k {\displaystyle k} の処理にブロック k + M {\displaystyle k+M} を必要とさせることもできる。その場合は h {\displaystyle h} 単位で必要な入力が増えていくため、アルゴリズム遅延が h + a + M ∗ h {\displaystyle h+a+M*h} になる。