アプリケーションによっては巨大なルールを必要とします。その際、実行時、ルールを変更するのでなければDispatch関数を使い、ルールをハッシュ化することができます。
次の例はオリジナルのルール式 monsterRuleSet と、それをハッシュ化したmonsterDispatchに関し、実際に全ルールを実行し終えるまでの時間を計測し、比較したものです。
monsterRuleSet = Table[i -> i + 1, {i, 5000}];
monsterDispatch = Dispatch[monsterRuleSet];
Timing[{1} //. monsterRuleSet]
Timing[{1} //. monsterDispatch]