2013-08-31
たらい回し関数を使ったsbclのベンチマーク
[ PR ]
SBCL (Steel Bank Common Lisp) についてのベンチマークを検索するといくつかヒットしますが、自分のMacbookAir (2009 Late) で確かめてみました。
Tak(たらい回し関数)の実装は、以下のものです。
(defun tak (x y z)
(if (<= x y )
z
(tak (tak (- x 1) y z) (tak (- y 1) z x) (tak (- z 1) x y))))
(print (tak 18 9 0))
これと同様のコードを C言語、Ocaml、SBCLの3種類で実装し、ベンチマークしました。簡単のため、Unixのtimeコマンドのuserを利用しました。(グラフと表の順序が逆ですいません。。)
言語 | 時間(ms) |
---|---|
C (gcc -O3) | 0.001 |
ocamlopt | 0.110 |
C (gcc) | 0.207 |
SBCL (native) | 0.350 |
SBCL (script) | 0.373 |
ocamlc | 6.620 |
ちなみにJavaでも行ったのですが、何故か10分もかかってしまったので載せませんでした。
この結果をどう見るかというところですが、SBCLのネイティブコードはocamloptには及ばないものの、Cの1.7倍ほどの速度で、かなり速いことが分かります。他のベンチマークもやってみたいですね。
サーバ/インフラエンジニア養成読本 仮想化活用編 [クラウドな現場で役立つ知恵と知識が満載!] (Software Design plus)
posted with amazlet at 14.01.16
SoftwareDesign編集部 編
技術評論社
売り上げランキング: 45,178
技術評論社
売り上げランキング: 45,178