TIPS : ルールのハッシュ化による高速化

アプリケーションによっては巨大なルールを必要とします。その際、実行時、ルールを変更するのでなければDispatch関数を使い、ルールをハッシュ化することができます。

次の例はオリジナルのルール式 monsterRuleSet と、それをハッシュ化したmonsterDispatchに関し、実際に全ルールを実行し終えるまでの時間を計測し、比較したものです。

In [ ]:
monsterRuleSet = Table[i -> i + 1, {i, 5000}];
monsterDispatch = Dispatch[monsterRuleSet];
In [ ]:
Timing[{1} //. monsterRuleSet]
Out[ ]:
{2.07142, {5001}}
In [ ]:
Timing[{1} //. monsterDispatch]
Out[ ]:
{0.00657, {5001}}
In [ ]: