我有一个 prolog 文件(带有 .pl 扩展名),我的 prolog 文件目前至少有 >200000 行(文件大小约为 20MB)。每当我想使用该文件时,我都必须将其加载到 swi-prolog(我使用“consult”谓词),但是通过这种方式,我需要花费很多时间来咨询..(现在 >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 .
Run Code Online (Sandbox Code Playgroud)
之后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 .
Run Code Online (Sandbox Code Playgroud)
qcompile 执行了很好的加速(快了近 18 倍),但需要一些额外的磁盘空间。
编辑完整的 wordnet 3.0 关系 (34.8 Mb) qcompile 表现相当不错:我们从 69.8 秒传递到 3.1 秒。它需要 39.8 Mb 的额外磁盘空间(用于 .qlf 文件)。