Isabelle:版本Isabelle2013-2的性能问题

我在伊莎贝尔有性能问题(即最新版本Isabelle2013-2)。 我使用基于新界面的Isabelle / JEdit

所以之前的情况是我的performance有些麻烦。 但是现在情况更糟了,因为我有时候需要等10秒才能进入正确的方向。 性能问题随着时间的推移变得更糟,到一定程度后,我必须在一个小时左右之后重新启动Isabelle。

我的怀疑是我可以更好地configurationIsabelle或应用一些提高性能的技巧。

硬件:
最近的CPU,这是一个英特尔i7四核(移动labtop芯片),16GB内存,快速SSD硬盘。

软件:
64位arch linux(内核3.12.5-1-ARCH)
没有32位兼容性库
我的java版本是:

java version "1.7.0_45" OpenJDK Runtime Environment (IcedTea 2.4.3) (ArchLinux build 7.u45_2.4.3-1-x86_64) 

我的理论文件大小为125KB ,我正在工作的整个理论是在一个文件中,但目前我真的只想要一个文件。

症状: Isabelle在UI的右下angular仅显示约900mb。 我有16GB内存,我应该configurationJava使用更多的内存? 有时一个单独的进程占用CPU的600%,也就是说,Linux内核看到的6个内核。

我使用的技巧:

一个诀窍是我插入*)在我正在工作的代码下面的一行。 这导致语法错误,并且不检查下面的代码。 第二个诀窍是我去了时间控制台,所有certificate花费了0.2秒以上的时间我都注释掉了,换成了sorry

最新的两个伊莎贝尔版本是真正伟大的改进!

任何build议或窍门,我如何能改善伊莎贝尔的performance?

有关性能调整的一些一般提示:

  • 需要区分Isabelle / ML(即底层Poly / ML运行时)与Isabelle / Scala(即底层JVM)。

  • Isabelle / ML:像i7这样的Intel CPU有超线程技术,几乎使内核数量翻倍。 在较小的移动机器上,通常将核心的标称数量限制为一半。 请参阅Isabelle / jEdit / Plugin选项/ Isabelle / General中的“threads”选项。 使用电池运行时,您甚至可以走得更远。

  • Isabelle / ML:使用x86(32位)Poly / ML通常会提高性能。 这只与Linux有关,因为该平台通常缺少其他平台常规提供的x86库。 在庞大的x86_64上很少有任何好处。 Poly / ML 5.5.x非常适合在32位模式的不变空间工作。

  • Isabelle / Scala:通过使用本地x86_64(这是默认设置)并提供大量的堆栈和堆参数,可以提高JVM的性能。

    • 主要的Isabelle应用程序捆绑包使用某些在特定位置硬连接的选项来引导JVM,但仍然可以对其进行编辑:

      • Linux:Isabelle2013-2 / Isabelle2013-2.run
      • Windows:Isabelle2013-2 / Isabelle2013-2.ini
      • Mac OS X:Isabelle2013-2.app/Contents/Info.plist

      例如,最大堆大小可以从-Xmx1024m更改为-Xmx4096m

    • isabelle jedit命令行工具是通过Isabelle设置环境配置的。 有关JEDIT_JAVA_OPTIONS一些示例,另请参阅$ISABELLE_HOME/src/Tools/etc/settings ,可将其复制到$ISABELLE_HOME_USER/etc/settings并相应地进行修改。 通过jconsole监视JVM的性能也是可能的,如果这实际上是一个问题的根源,那么可以得到一个想法。

  • Isabelle / Scala:Isabelle将某个JVM捆绑在一起,这在默认情况下是假设的。 Java版本的这种变量消除对于重新获得一些理智是很重要的 – 否则你永远不知道你得到了什么。 你确定你的OpenJDK实际上在这里使用吗? 这是不可能的,除非你已经编辑了一些伊莎贝尔设置。

在Linux上的性能问题的其他来源是图形。 Java / AWT在X11上比在Windows和Mac OS X上慢得多。在Linux上使用准本地GTK外观会进一步降低图形性能。