18項 予想される計算のコストを償却する

予想される計算のコストを償却する

積極評価についてです。



大規模な数字のデータを表すテンプレートクラスを考えます。

template<class NumericalType>
class DetaCollection
{
public:
    NumericalType min() const;
    NumericalType max() const;
    NumericalType avg() const;
    ...
}

遅延評価なら、min()が呼び出されるたびに最小値を検索しますが、積極評価なら、値が追加されるたびに最小値を保持します。
値を追加するときの処理量は増えますが、min()呼び出し時の処理量は減ります。

他の例として、動的配列が最初に領域を確保するとき、拡張されることを見越して大きめの領域を確保しておくなどがあります。