入力に対して決まった値を返し、入力値のレンジが広く、何度も値を取得する必要がある場合、Cなんかでは初期化時に全入力値に対する結果を保持するテーブルを生成したりします。速度重視する場合のsinテーブルとか。割と制約がシビアでない環境では、新しい入力パラメタが与えられるたびに値を保存する関数でもいいと思います。 my %cache; sub fast_sin { return $cache{ $_[0] } if exists $cache{ $_[0] }; $cache{ $_[0] } = sin( $_[0] ); }PerlのMemoizeモジュールや、JSANのMemoizeモジュールを使うとこのキャッシング機能を毎回書く必要がなくなります。Perlの場合は、 use Memoize; memoize 'sin';とするだけでsin関数にキャッシュ機構が組込まれます。 Perlでの
![Table,Caching,Memoize,Closure,Profiler - koyachiの日記](https://cdn-ak-scissors.b.st-hatena.com/image/square/7a2f784e431033edb5bfe770b4580fb75b7d831f/height=288;version=1;width=512/https%3A%2F%2Fimages-fe.ssl-images-amazon.com%2Fimages%2FI%2F41Fukj6rmaL._SL160_.jpg)