番兵
ループの終了条件が複数ある場合に、条件判定の数を削減するために置くダミーのデータ。この意味での番兵を使った最適化技法を番兵法(-ほう)と呼ぶ。
まず、1の語義に近い例を見る。
以下のC言語プログラムは、整数 entry と要素数 len の配列 a が与えられたときに、a[i] <= entry < a[i+1] となる添字 i を求める。ただし a[len-1] <= entry のときは、a[len] は存在しないが、len-1 を返す。また entry < a[0] のときは -1 を返す。
このプログラムには、ループ終了判定として i >= 0 と a[i] <= entry の2つの条件が現れる。しかし、a[0] にダミーのデータとして、常に a[0] < entry を満たす値を入れておけば、以下のように単一の終了条件に書き直すこともできる。
番兵法はループ中の条件判断を削減できるため、実行時間の削減が非常に重要な場合によく検討される。1 回の条件判断にかかる時間は短くても、ループで繰り返す場合には大きな差となる場合がある。しかしソース上で終了条件がわかりにくくなる可能性も高く、現代の高速化したコンピュータにおいては必ずしも歓迎される技法ではない。採用にあたっては、その利点・欠点を十分に考慮する必要がある。