私は何度も呼び出される高価な関数を持っていますが、そのパラメータには可能な値のセットが非常に限られています。
ファンクションの戻りコードは引数のみに依存するため、実行可能な引数と対応する戻りコードに対して、静的キャッシュを関数内に保持することが明らかです。パラメータのすべての組み合わせに対して、高価な操作は1回のみ実行されます。
私はこのような状況で常にこのアプローチを使用していますが、うまくいきますが、GCC関数の属性const
またはpure
がおそらくこれで私を助けてくれるはずです。GCC関数の属性とキャッシュの比較
誰もこの経験がありますか? GCCがpure
とconst
の属性をどのように使用するのですか?コンパイル時または実行時にのみですか?
私は、関数を呼び出すには十分にスマートであることをGCCに依存している同じパラメータ値に一度だけ
int foo(int) __attribute__ ((pure))
として宣言、または保証は一切ありませんし、私はより良い、キャッシング・アプローチに固執することはできますか?
EDIT:私の質問は、キャッシュ/メモ/ルックアップテーブルではなく、GCC関数の属性です。
pureは適用されません。しかしconstは良く見える。 –