魔術師をめざして

魔術師を目指して、相場・数学・プログラム言語を研究しています。

prolog 速えぇー

Schemeスピードテスト

という記事を過去に書いた。読んだら、面白かったので、再掲載する。
-------------------------------------------------
SWI-Prologの結果に注目。
haskellは、LLVM無しでの結果だ。
pythonの結果は信じられない。
fさん、pythonは、数論研究にもきっと、使えますね。
-------------------------------------------------
「以下、再掲載」

きょうはちょっとした思いつきで Schemeスピードテストをやってみた。

内容は 123^300000(30万乗)の計算をさせるという単純なもの。テストしたのは7つの Scheme で答を出力できたのは3つだけだった。設定を変えればよいのかもしれないが面倒なので正常に終了したものだけを挙げると以下のとおり。

① Ypsilon(イプシロン)         52秒
② Schluessl(シュリュッセル)  1分40秒
Gauche(ゴーシュ)                  5分23秒

f:id:fxrobot:20141222053852j:plain

なお、計測中は DVDで映画を観ていた。実行中は静止させていたよ。

でも、そういういい加減な環境で、目覚まし時計の秒針で計ったということだけど、どれもおなじ条件だからね。

それでこの結果。ちなみのぼくの PC は Windows7 64bit版 メモリ 12GB だ。

ついでにそのほかの言語もやってみた。
結果は以下のとおり。

① SWI-Prolog    1秒強
Haskell                      6秒
Python 3.4.2              9秒
④ PyPy 2.4.0                20秒
⑤ Frink 52秒
⑥ J 2分3秒

まぁ、これは、ディスプレイに数字を打ち終わった時点までの時間で本質的でない部分が含まれていると思う。それにしても工夫なしで計算してくれて出力し終わってくれる、これがすごくないかい。すごいと思うし、ありがとうって感じ。

なお、GAP でも試した。表示は瞬時だったが、

gap> 123^300000;
<integer 341...001 (626972 digits)>

こんな感じの表示だったので、こんかいは対象外とした。でも、たしかに計算は終わっているようだよね。このドイツ製の GAP に注目か!?

なお、Factor でも試そうと思ったが落ちるのが目に見えているのでやらなかった。Factor はじつに魅力的な言語だけど、現時点では、大きな計算負荷を掛けると落ちてしまう。【追伸】とはいえあになって気になったので試したが、123^300000(30万乗)どころか 123^3000 でダウン。
「以上」