GraalVM の native-image で HelloWorld してみる
目的
https://medium.com/graalvm/instant-netty-startup-using-graalvm-native-image-generation-ed6f14ff7692 によると、graalvm を利用すると Java Application の起動が圧倒的に高速になるようだ。実際にどの程度高速化されるのかを Hello World Application を手元で実行してみることにより体感する。
実験
$ javac Hello.java
$ java Hello
Hello
$ time java Hello
Hello
java Hello 0.08s user 0.02s system 102% cpu 0.097 total
$ ~/Downloads/graalvm-1.0.0-rc1/Contents/Home/bin/native-image Hello
Build on Server(pid: 55301, port: 26681)*
classlist: 918.63 ms
(cap): 1,817.31 ms
setup: 2,839.95 ms
(typeflow): 3,744.88 ms
(objects): 2,570.67 ms
(features): 43.37 ms
analysis: 6,469.76 ms
universe: 281.22 ms
(parse): 1,153.94 ms
(inline): 1,592.75 ms
(compile): 10,151.29 ms
compile: 13,517.63 ms
image: 2,241.96 ms
write: 1,410.72 ms
[total]: 27,753.54 ms
$ ls -lah
total 5.0M
drwxr-xr-x 5 tokuhirom staff 160 May 23 11:14 ./
drwxr-xr-x 121 tokuhirom staff 3.8K May 23 11:11 ../
-rw-r--r-- 1 tokuhirom staff 401 May 23 11:13 Hello.class
-rw-r--r-- 1 tokuhirom staff 111 May 23 11:13 Hello.java
-rwxr-xr-x 1 tokuhirom staff 5.0M May 23 11:14 hello*
$ time ./hello
Hello
./hello 0.00s user 0.00s system 65% cpu 0.011 total
$ file ./hello
./hello: Mach-O 64-bit executable x86_64
結論/考察
結論からいうと、Hello World レベルのプログラムでも起動が高速化されている。ファイルサイズは 5MB 程度。 この速度ならば、日常的に利用する command line application を Java で記述することも現実的といえる。
Published: 2018-05-23(Wed) 02:20