如何以更快的方式查询文件到swi-prolog

时间:2013-03-29 10:20:19

标签: prolog swi-prolog

我有一个prolog文件(扩展名为.pl),我的prolog文件当前至少有> 200000行(文件大小为~20MB)。 每当我想使用该文件时,我必须将它加载到swi-prolog(我使用'consult'谓词),但是这样,我需要花很多时间来咨询..(>现在10分钟)

所以,任何人都知道以最短的时间查阅文件的另一种方式,请帮助我。 预先感谢。

1 个答案:

答案 0 :(得分:4)

您应该预先编译数据:请参阅docs

编辑:对不起,我上面提到了一个错误的链接:正确的链接是qcompile。这里用wordnet数据进行测试:

?- load_relation(sk, N).
% /home/carlo/prolog/wordnet30/prolog/wn_sk compiled into wordnet 14,11 sec, 212,559 clauses
N = 3 .
qcompile('/home/carlo/prolog/wordnet30/prolog/wn_sk')之后

生成.qlf:

?- load_relation(sk, N).
% /home/carlo/prolog/wordnet30/prolog/wn_sk loaded into wordnet 0,81 sec, 212,558 clauses
N = 3 .

qcompile执行良好的加速(几乎快18倍),但需要一些额外的磁盘空间。

编辑关于完整的wordnet 3.0关系(34.8 Mb)qcompile表现相当不错:我们从69.8秒传递到3.1秒。它需要39.8 Mb的额外磁盘空间(对于.qlf文件)。