关注how-to-use-persistent-heap-images-to-make-loading-of-theories-faster-in-isabelle和另一个建议我为Nominal Isabelle创建了一个图像:
isabelle build -v -b -d . Nominal2
堆映像是在〜/ .isabelle:
下创建的.isabelle/Isabelle2013-2/heaps/polyml-5.5.1_x86-linux/Nominal2
然后我开始了
isabelle jedit -d /path/to/Nominal-distribution -l Nominal2
我预计系统会快速加载一个导入名义部分的理论,但这花了将近一分钟。这是通常的吗?
答案 0 :(得分:5)
构建堆映像的过程看起来是正确的。实际上,您实际上并不需要执行isabelle build
步骤,因为如果堆不存在或者不是最新的,isabelle jedit
将自动触发构建。
您可以根据以下两个事实确定isabelle jedit
是否正在使用堆:
如果需要构建堆,则会弹出一个对话框,显示第一次启动jEdit时的构建进度。这通常需要10秒到几个小时,具体取决于需要构建的堆的大小。下面的屏幕截图显示了构建对话框的示例;在这种情况下,我正在构建Main
堆:
如果它根本没有使用堆(例如,如果你忘了指定-l Nominal2
),那么Nominal2
包含的所有理论都需要打开在jEdit中,你会在jEdit" Theories"中看到它们。面板。
在下图中,Scratch
会导入文件AutoCorres
,然后导入MapExtra
,Padding
,BitOperations
,等等。如果我使用正确的AutoCorres
堆,则不需要加载这些文件,因为它们已经预先编译到堆中:
即使Isabelle 使用堆,它仍然必须在启动时将其加载到内存中。这通常需要几秒钟,当jEdit本身的启动时间不那么惊人时,可能就是你所经历的。