3

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

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

4

1 回答 1

5

您应该预编译您的数据:请参阅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 文件)。

于 2013-03-29T11:00:06.067 回答