我有一个 prolog 文件(扩展名为 .pl),我的 prolog 文件目前至少有 >200000 行(文件大小约为 20MB)。每当我想使用该文件时,我必须将其加载到 swi-prolog(我使用“咨询”谓词),但是这样,我需要很多时间来咨询..(现在超过 10 分钟)
所以,任何人都知道另一种以最短时间查阅文件的方法,请帮助我。预先感谢。
我有一个 prolog 文件(扩展名为 .pl),我的 prolog 文件目前至少有 >200000 行(文件大小约为 20MB)。每当我想使用该文件时,我必须将其加载到 swi-prolog(我使用“咨询”谓词),但是这样,我需要很多时间来咨询..(现在超过 10 分钟)
所以,任何人都知道另一种以最短时间查阅文件的方法,请帮助我。预先感谢。
您应该预编译您的数据:请参阅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 文件)。