相关疑难解决方法(0)

如何加快Java VM(JVM)的启动时间?

我正在运行启动多个JVM进程的测试.与在JVM中运行的实际测试时间相比,JVM的摘要启动时间非常重要.我如何加快速度?

我已经使用了"-client"选项,这确实有所帮助,但没有我想要的那么多.有没有其他方法,比如预加载一堆JVM并以某种方式重用它们?

java performance

37
推荐指数
3
解决办法
2万
查看次数

设计选择的原因导致JVM/CLR语言长期启动?

我正在考虑设计一种编程语言,我希望它以与CPython或Perl大致相同的速度启动.为了在我的语言中做出正确的设计选择以达到这个要求,我正在研究现有的动态语言,看看他们的设计选择如何影响他们的启动时间.许多基于JVM或CLR的语言实现比CPython或Perl具有更长的启动时间.这表明在JVM和/或CLR的设计中做出了设计选择,这导致了这种情况.那是什么选择,为什么这样做?

这是一个由三部分组成的问题:

  1. 动态JVM/CLR语言实现的缓慢启动是一个基本的设计问题,还是只是一个可以通过改进语言实现来纠正的小问题?
  2. 如果这是一个设计问题,那么JVM的哪些设计选择以及这些语言的设计选择会导致这些语言的启动延迟比CPython和Perl更长?
  3. 为了缓慢开始,获得了什么?也就是说,由于(2)所描述的设计选择,JVM/CLR动态语言对CPython和Perl缺乏什么好处?

请注意,其他SO问题已经处理" 为什么JVM启动缓慢? "以及各种JVM语言启动速度慢的原因.这个问题与那个问题截然不同,因为这个问题与设计权衡有关; 是为了换取那么长的启动时间而获得的收益?

其他SO问题询问用户如何加速各种JVM语言(答案往往是有一些预加载JVM的守护进程),但这不是我在这里要求的; 我问你如何设计一种允许快速启动(没有预加载)的语言(和/或虚拟机),以及为了换取这种情况你会失去什么.

背景研究

各种语言实现的速度

我在我的GNU/Linux机器上的非正式Hello World测试中对CPython和Perl进行了基准测试,发现它们的启动时间不到0.05秒.在这篇文章的其余部分,我会说"快速"意味着"启动时间不会比CPython或Perl更长",而"慢"意味着其他情况.

这是很容易找到的意见的是JVM本身和/或Java是慢启动(3,4,5,6),以及混凝土1秒或更长的数量级上的数字(7,27)和基准(8).但是2个Hello世界JVM基准开始仅为0.04秒(在GNU/Linux)(9,10).

Clojure的有大约0.6-1秒的启动时间(1,2); 这比我0.05秒的目标慢约20倍.ClojureCLR甚至更慢(1).Clojure启动时基准和讨论可以在博客文章Clojure bootstrapping(Kariniemi)中找到,为什么Clojure缓慢(Trojer).

一个创业时间的基准测试人员说,Clojure和JRuby "明显慢于其他所有人"(25); 这些也是仅有的两种基于JVM的动态语言.另一个(非常古老的)基准测试表明,Jython的启动速度也很慢(26).我们在这个问题上专注于动态语言,但是Scala的速度也不是很快(1).有一个名为Kawa的JVM Scheme (23).据报道,Kawa的启动时间约为0.4(24),比Clojure快,但仍比我的目标高出一个数量级.

启动期间有哪些实现?

两个(1 …

compiler-construction clr jvm language-design

20
推荐指数
1
解决办法
598
查看次数

改善Scala脚本启动时间 - 客户端模式?

我想让简短的Scala脚本像python脚本一样快地运行,特别是在脚本启动时间方面.

任何人都可以推荐一些方法,例如,不涉及使用GCJ进行编译吗?

我能想到的一种方法是使用JVM的客户端模式运行脚本,但我似乎无法使其工作.一个例子(已知 - 好)shebang为此将是伟大的.

更新:我知道其他问题,但不要认为到目前为止找到了任何可行的答案,因为我正在寻找适用于STANDARD安装的解决方案,而无需额外的要求.这就是我试图解决的问题"例如,不涉及使用GCJ进行编译".

看起来-client模式是为了这个明确的目的而设计的,但是出于某种原因从scala脚本激活是很尴尬的.

performance jvm scala startup

11
推荐指数
1
解决办法
2124
查看次数

如何让JVM启动更快?

可能重复:
如何加速Java VM(JVM)启动时间?

我正在用Java编写命令行实用程序(或者可能在另一种基于JVM的语言中).问题是JVM启动时间.例如,JVM的启动速度比Python和Ruby慢.

如何让JVM统计更快?我可以"提前"(在Linux和Windows中)以某种方式加载JVM,以便每次在命令行中运行我的实用程序时都不应该加载它吗?

java performance jvm

6
推荐指数
2
解决办法
7005
查看次数