Computer Language Benchmarks GameにGMPライブラリを使ったClojure pididitsを投稿してみた。
- only 3 benchmarks game tasks still have no Clojure programs - Google グループ
- Re: A Performance Comparison of SBCL & Clojure - Google グループ
shootoutの投稿に関しては1ファイルで完結するなど規約が(どこかに)ある。
clojureでJNIを使う場合は、ファイル分けして対応するか3rdパーティライブラリを使うのだが、その制限でJNIを使うのは結構めんどくさい。
そこで、JNIのclassファイルをASMに書き換えて、compile後も動くようにリフレクションで呼び出すようにして対処した。
ASMの部分はこちらを参考にやってみた。
https://gist.github.com/athos/1033052
http://asm.ow2.org/eclipse/
一番不安なところは、元にしたjava版では実行時にエラーが起きているところ。
提出先でうまく動けばいいのだけど・・・。
(ローカルでは動いている)
http://benchmarksgame.alioth.debian.org/u64/program.php?test=pidigits&lang=java&id=2
http://benchmarksgame.alioth.debian.org/u32/program.php?test=pidigits&lang=java&id=2
また、clojure.asmが将来Clojureの公開APIから消える可能性があり、その場合は動作しなくなる予定。
0 件のコメント :
コメントを投稿