2

jmx接続URL、オブジェクト名、および属性名を入力および出力属性値として取得する単純なJavaアプリケーションがあります。このアプリケーションは毎分何百回も実行され、実行時間には厳しい制限があります。最近、多くの特殊なケース (ミリ秒から秒への変換、リストの折り畳みなど) が出現し、このアプリケーションを再コンパイルして再配布するのが面倒になっています。そこで、JMX をサポートするスクリプト言語に切り替えることにしました。

groovy、jython、および clojure を試してみたところ、それらの初期化時間が長いことがわかりました (groovy/clojure/jython では約 0.9/1.2/3.5)。

初期化速度が速いものはありますか、またはJavaからロードせずにこれらの言語の初期化時間を短縮する方法はありますか?

4

4 に答える 4

2

最近では、jarkが優れたソリューションのようです。

次のような clojure スクリプトを作成します。

(ns jarkserver)

(require '[clojure.tools.nrepl :as nrepl])

(defn -main
[& args]
(nrepl/start-server 9000)
(.join (Thread/currentThread)))

次から始めます。

 lein run -m jarkserver

次に、次のように REPL を開始します。

 jark repl

または、次のように clojure スクリプトを実行します。

 jark <path_to_clojure_script>

または、いくつかの clojure コードをインラインで実行します。

 jark -e "(+ 1 1)"

編集:Jarkサーバーを起動する簡単な方法は次のとおりです。

jark -cp lib/*:lib/dev/*:* -p 9000 server start  
于 2012-09-20T08:28:37.537 に答える
0

Clojure 用の Cake (https://github.com/flatland/cake) には、バックグラウンドで実行される初期化済みの JVM を使用する Clojure スクリプト ランチャーが含まれているようです。詳細は自分で調べる必要があります。私はそれを使用したことがなく、それについて具体的なことは何も知りません。しかし、明らかに、起動時間が大幅に短縮されます。

于 2012-09-19T18:00:09.690 に答える