Closed
Description
Given a simple class like:
public class Foo {
public static void main(String [] args) {
System.out.println("Hello");
}
}
$ javac Foo.java
$ brew install Tenzer/tap/multitime
$ export GRAALVM_HOME=/Users/borkdude/Downloads/graalvm-ce-java8-19.3.0/Contents/Home
$GRAALVM_HOME/bin/native-image Foo --no-server
$ multitime -n100 ./foo
===> multitime results
1: ./foo
Mean Std.Dev. Min Median Max
real 0.007 0.001 0.005 0.008 0.009
user 0.002 0.000 0.002 0.002 0.003
sys 0.002 0.000 0.001 0.002 0.004
$ export GRAALVM_HOME=/Users/borkdude/Downloads/graalvm-ce-java8-20.1.0-dev/Contents/Home
$GRAALVM_HOME/bin/native-image Foo --no-server
$ multitime -n100 ./foo
===> multitime results
1: ./foo
Mean Std.Dev. Min Median Max
real 0.015 0.001 0.011 0.015 0.016
user 0.007 0.001 0.005 0.007 0.008
sys 0.005 0.000 0.004 0.005 0.006
I noticed this when trying out 20.1-dev jdk8 with babashka, a scripting tool made with GraalVM. On GraalVM 19.3.0 java8 it has a startup time of around 14ms, but when I was trying GraalVM 20.1-dev it became 24ms which is 10ms slower.
$ export GRAALVM_HOME=/Users/borkdude/Downloads/graalvm-ce-java8-19.3.0/Contents/Home
$ script/compile
$ multitime -n100 ./bb '(System/getProperty "java.vm.version")'
===> multitime results
1: ./bb "(System/getProperty \"java.vm.version\")"
Mean Std.Dev. Min Median Max
real 0.014 0.001 0.012 0.014 0.016
user 0.005 0.000 0.004 0.005 0.006
sys 0.006 0.001 0.004 0.006 0.008
$ export GRAALVM_HOME=/Users/borkdude/Downloads/graalvm-ce-java8-20.1.0-dev/Contents/Home
$ script/compile
$ multitime -n100 ./bb '(System/getProperty "java.vm.version")'
===> multitime results
1: ./bb "(System/getProperty \"java.vm.version\")"
Mean Std.Dev. Min Median Max
real 0.024 0.002 0.018 0.024 0.026
user 0.011 0.001 0.008 0.011 0.011
sys 0.010 0.001 0.007 0.010 0.012
To build babashka:
$ git clone https://github.com/borkdude/babashka --recursive
Install lein, a Clojure build tool.
Set GRAALVM_HOME
to either 19 or 20 with java8.
Then run script/compile
(on linux or macos).
This will produce a bb
executable.