効率化しない、しかし最速にするコツ (Dictionaryキャッシュ)

用途が、「入力」と「出力」の組み合わせ、という処理で、一度の起動のうちで、利用する組み合わせ1万パターン以下のケースでは、

「入力」から「出力」を割り出す処理は平易でわかりやすく記述して、記述レベルでは効率化しない。

C#ならDictionaryを利用して、「入力」キーに対して「出力」値(オブジェクト)をセットする。

こうすることで、「入力」がDictionary既存であれば、その「出力」を利用する。なければ処理を行う。

こうすることで、見やすいソースだが効率化していない遅めの処理であっても【遅いのは1度だけ】であって、
【2度目からは処理を省略できる超高速」】となります。

私は入力が『式の文字列 string』で、出力が『二分木 object』のもので、このDictionaryキャッシュを使いました。
コツは、再利用するObjectに【初期化】機能の関数を実装しておくことです。再利用時、新規objectと同じ状態にする為。
二分木にする処理は前処理を数回行ったりするので時間がかかるものですが、これを利用することで高速になりました。
再利用時の初期化といっても、nodeごとの計算結果保持のobjectを初期化するだけなので、あくまで既存nodeの計算結果objectを1つずつ初期化するだけなので、作り直すよりかは遙かに高速でした。