是否有一个库/技术来收集Prolog中最佳子句排序的统计信息?

时间:2012-06-13 18:43:44

标签: performance optimization prolog swi-prolog sicstus-prolog

我正在编写一个程序,我需要查看字符串是否与特定模式匹配。现在我已经在Prolog中实现了这个规则matchPattern(S),超过20种不同的定义。

我最终通过模式检查谓词运行所有二进制字符串达到一定长度。该程序相当慢(正如Prolog经常那样),并且因为有很多不同的定义,所以我最好订购它们,以便最匹配的那些是最早的顺序,因此首先由Prolog匹配,避免回溯为尽我所能。

我现在正在使用SWI Prolog,但我可以访问SICStus,所以我愿意使用它或者我可以免费获得的任何Prolog解释器。

3 个答案:

答案 0 :(得分:2)

SWI-Prolog有profile/3show_profile/2可以帮助您完成任务。

如果模式之间存在共同部分,则将模式规则分解并应用剪切可以改善运行时。这种分析应与统计数据结合起来。

答案 1 :(得分:-2)

你应该考虑使用DCG和削减。

答案 2 :(得分:-3)

你应该研究削减。这个的prolog语法是:

!