2013年7月5日金曜日

pidigits Clojure #x program | Computer Language Benchmarks Game


Computer Language Benchmarks GameにGMPライブラリを使ったClojure pididitsを投稿してみた。

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 件のコメント :