2010/06/20

Lisp は「C 言語並みに速い」「C 言語より速い場合がある」

だそうです。

On Lisp

On Lisp 後注より
Gabriel, Richard P. Performance and Standardization. Proceedings of the First International Workshop on Lisp Evolution and Standardization, 1988, p.60
ある処理系で triangle を試していて, Gabriel は次のことを発見した:「プログラマが C コンパイラにレジスタ割り当ての指示を与えたときと比べても, C 版の反復による実装よりも Lisp 版のほうが 17% も高速だった.」彼の論文では Lisp で実装したほうが C より高速になるプログラムが他にもいくつか挙がっており, なかには 43% も高速になったものもある.

Lisp:よくある誤解

Lisp:よくある誤解 「Lispは高速なプログラムが書けない?」 より
LispでもほぼC並に速いコードを 書くことは可能です。
C並に速いLispコードは見た目も安全性もC並になる

ベンチマーク

こういうベンチマークもあるそうで

Let Over Lambda

Lisp の速度について、LET OVER LAMBDA Edition 1.0 では6章で扱っていました。
Lisp は速い。本当に速いのだ。
この章では、Lisp が他のあらゆるプログラミング言語よりも速くなり得ること、実は C のような低水準プログラミング言語は、マクロがかけているため、Lisp に対して性能面で不利なことを明らかするつもりである。 
参考までに LOL の6章の目次はこんな感じ。
  • 第6章
    • Lisp は速い
    • マクロが Lisp を速くする
    • ディスアセンブラと仲良くなる
    • ポインタスコープ
    • tlist とコンスプール
    • ソーティングネットワーク
    • コンパイラの書き方とベンチマーク 

参考


追記

まさか shiro さんのところに valvallow という文字が現れるようなことが起こるとは・・・。
すげーな Common Lisp ・・・。

追記2

How to make Lisp go faster than C
という論文が面白いです。
簡単な画像処理をCとCommon Lispで書いて速度を比べるというものですが、
CLの速度の劇的な変化が笑えます。
インタプリタで実行 -> Cの2300倍遅い
コンパイルして実行 -> Cの60倍遅い
型宣言と最適化を付ける -> Cと同等の速度(一部に関してはCより速い)

追記3

LET OVER LAMBDA Edition 1.0 P.75 より
(CL-PPCRE は、Common Lisp で書かれた正規表現ライブラリ)
第1に、CL-PPCRE は高速である。本当に高速だ。品質の良いネイティブコードコンパイラでコンパイルすれば、ほとんどの正規表現に対するベンチマークが、CL-PPCRE の方が Perl よりも2倍か、もっと高速だという結果をしばしば示す。そして、Perl の正規表現エンジンは、非 Lisp 正規表現エンジンの中では最高速なものの1つだ。それは C で書かれ、高度に最適化されたエンジンなのである。

LET OVER LAMBDA Edition 1.0


0 件のコメント:

コメントを投稿