私はLispだけでなくC++にも興味があるので、Guillaume Michelによって書かれたベンチマークhereを再現しようとしました。ベンチマークは、基本的に大規模アレイで複数回実行されるDAXPY BLAS Level 1操作です。完全なコードは、ありがたいことにgithubに投稿されており、両方の言語で約1ページです。なぜこのlispベンチマーク(sbcl)は遅いのですか?
悲しいことに、私はlispの計算の速度に到達することができないことを発見しました。 Linuxの場合
、彼はC++だけでなく、Lispのための同様の結果だ:
サイズ| C++ | Common Lisp
100,000,000 | | 181.73 | |
サイズ:183.9
数字は私のPC上の両方(自然に)異なりますC++ | Common Lisp
100,000,000 | 195.41 | 3544.3
は、私は、追加の測定をしたかったので、私はtime
コマンドを使用して、両方のプログラムを開始し、(アップ短縮)得た:私はこの露骨な違いのために異なる理由を想定し
$ time ./saxpy
real 0m7.381s
$ time ./saxpy_lisp
real 0m40.661s
。私は両方のコードサンプルをスキャンしましたが、C++バージョンとLispバージョンの間に大きなアルゴリズムや数値の違いは見つかりませんでした。それで私はbuildapp
の使用法が遅れを生み出したと思ったので、私はREPLで直接ベンチマークを開始しました。私の最後の手段はsbcl
の別のバージョンを試すことでしたので、最新のsbcl-1.3.11
をダウンロードして評価しました - それでもなお(最適化された)LispのバージョンはC++のものよりずっと長く必要です。
私には何が欠けていますか?
Lispコードをコンパイルしましたか? – Barmar
私はREPLの中から(lispfileをロードして)bashから--loadを実行し、コンパイル済みの(?)file.faslファイルを試しました。 – claudio
'.fasl'ファイルはコンパイル済みのバージョンです。 – Barmar