GraalVMを使う → おそい (というか、Javaが十分早い。Goよりも。)
という記事を書きました。
記事中、GraalVMについて、「フットプリントの軽さや、起動の速さなどを目指しており」と書いているにもかかわらず、速度についてのみ触れ、フットプリントについて言及していなかったため、フットプリントについても確認してみました。
環境
MacBook Pro (Retina, 13-inch, Late 2012)
プロセッサ 2.9 GHz Intel Core i7
メモリ 8 GB 1600 MHz DDR3
測定
/usr/bin/time -l コマンドを使用します。
インストールされている各環境の言語バージョン、計測する実装は前記事と同じです。
結果
言語 | maximum resident set size | GraalVMを1とした比率 (小数点1位切り捨て) |
---|---|---|
Node.js | 21,852,160 | 12 |
Java | 28,856,320 | 16 |
GraalVM | 1,798,144 | 1 |
Golang | 1,974,272 | 1 |
C#(dotnet) | 18,505,728 | 10 |
Python3 | 6,537,216 | 3 |
GraalVMすごい!
なんと、Javaの1/16にフットプリントを抑えることができます。
(今回はフィボナッチ数を計算するという、小さなコマンドラインツールで確認しているので、Webアプリ等、Kubernatesでサービス提供したいアプリケーションでは状況が異なると考えますが、また、コンテナのオーバーヘッド等もあるので、正確ではありませんが、)GraalVMはJavaの1/16のインフラで同一のプロセス数のサービスを提供できるポテンシャルがある、ということです。
素晴らしいですね!
(あと、Pythonが優秀なのがもう一つの驚き。)