覆盆子上的Java开始慢吗?

时间:2014-06-23 18:35:52

标签: java raspberry-pi

我在Raspberry Pi上安装了Java,启动速度非常慢。为什么会这样?

# time java
..
real    0m1.356s
user    0m1.190s
sys     0m0.110s

编辑:我正在与Hello World c ++二进制文件进行比较,花了0m0.001s。为什么c ++二进制文件要快得多?

3 个答案:

答案 0 :(得分:4)

Raspberry Pi的处理器速度比计算机慢得多,因此其上的所有内容都会比您通常看到的速度慢得多。

编辑*

我认为C ++会更快,因为Java为了运行而产生的初始开销。您需要考虑JVM启动所需的时间以及在Java程序未编译时已编译C ++程序的事实。

然而,重要的是要注意,C ++并不总是比Java快。 JVM使用的JIT(即时)编译器有助于在代码运行时优化代码。

答案 1 :(得分:3)

启动速度有两个限制因素:

  1. 软件
    1. 您已安装的发行版。有分布,必须模拟一些操作(soft-ABI)
    2. Java-Version
    3. 应用程序,你想要开始
  2. 硬件
    1. 树莓派是SLOW,它只有256MB(512MB)的RAM。这与grafic处理器共享(大多数~50MB或更多)
    2. 只有一个CPU~800MHTz
    3. CPU是ARM(比x86慢)*)
  3. 我第一次启动Java(一个tomcat web服务器)时,需要大约5分钟才能启动。在我的电脑上,它需要〜15秒

    <强>更新 更新的问题给出了答案。 您将本机编译的hello世界与完整虚拟机的启动进行比较。

    我认为,对于(第一个)启动Java应用程序,您将始终获得令人难以置信的糟糕启动性能。

    第二个java进程可能使用共享内存和第一个,因此第二个应用程序可能会更快启动。

    *)我认为它较慢,我没有关于它的基准

答案 2 :(得分:-1)

实际上我并不想添加答案,因为现有的答案完全可以解释你的苹果和梨的比较。

但是,我认为JVM实现具有significant impact on performance的事实需要更多的可见性。

我自己来到这里,因为我的Spring应用程序需要100秒才能启动。从OpenJDK-8切换到Oracle的Hotspot后,启动只用了15秒。适用于ARM的Hotsport包含在Raspbian中:

apt-get install oracle-java8-jdk