groovyを高速起動するgyコマンド
...を作った。 作ったといっても既存のgroovyコマンドを改造しただけなんだけど。
背景
groovyを高速に起動するにはgroovyservというものがある。これは初回起動は遅いがその後はgroovyの起動が爆速になるというものだ。
でも、使い勝手が今ひとつだった。 例えばgroovyservを使って、スクリプトで書いたサーバを起動しCtrl-cで停止すると、ポートが解放されなかったりしたためだ。
ちなみに、初回起動でサーバを起動し次回からはそのサーバで実行することでコマンドの起動を高速化する方法はNailGunやGradleでもやっていたり結構メジャーなようだ。
だが、この方法以外に高速化の方法がないのだろうか、ってことで調べたらあった。下記リンクによるとJVMの設定でClojureを高速に起動できるらしい。ならgroovyだって高速に起動できるはずだ。
http://tnoda-clojure.tumblr.com/post/51495039433/jvm-clojure-30
ということで、高速化オプションを設定してJVMを起動するようにgroovyコマンドを改造した。
追加したjava起動オプション
- -client
- -Xverify:none
- -XX:+TieredCompilation
- -XX:TieredStopAtLevel=1
インストール手順
※シェルスクリプトなのでwindowsだと動かない(cygwinなら動くが)。
機能制限
少しでも高速化するために起動時に~/.groovy/setupファイルは読み込まないようにした。なので、grapeのプロキシ設定とかをsetupファイルに書いている場合は通常のgroovyコマンドを使うしかない。