Prolog Language
パフォーマンス
サーチ…
抽象機械
効率のために、Prologコードは通常、実行前にマシンコードを抽象化するようにコンパイルされます。
Prologプログラムの効率的な実行のために、多くの異なる抽象的な機械アーキテクチャおよび変形が提案されている。これらには、
- ウォーレン抽象機械 WAM
- TOAM 、B-Prologで使用される抽象機械。
- SWI-PrologのVMの基礎として使用されるZIP
- VAMは、ウィーンで開発された研究アーキテクチャです。
インデックス作成
広く使われているすべてのPrologインタプリタは、適切な句を効率的に選択するために引数索引付けを使用します 。
ユーザーは、少なくとも最初の引数の索引付けに頼っていることができます。つまり、 最初の引数の最も外側の項のファンクタとアーティティによって、効率よく句を分けることができます。その引数が十分にインスタンス化されている呼び出しでは、一致する句は、その引数をハッシュすることによって一定時間内に本質的に選択することができます。
最近では、 JIT索引付けがより多くのシステムで実装され、述部が呼び出されたときに十分にインスタンス化されたすべての引数に対して動的索引付けが可能になりました。
テールコールの最適化
実質的にすべてのPrologシステムは、 テールコール最適化 (TCO)を実装しています 。これは、述部が確定的であれば、 テール位置にある述語呼び出しを一定のスタック・スペースで実行できることを意味します。
テール再帰最適化(TRO)は、テールコール最適化の特殊なケースです。
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow