dyncomp 0.1リリース
Gaucheの拡張モジュールdyncompをリリースしました。このライブラリを使うと、Gaucheのコードの中でCの関数が定義できるようになります(PerlのInline::Cみたいなモジュールです)。
メリットとして、以下のものがあります。
- Schemeのコードの中に埋め込めるのでメンテナンスが簡単
- コンパイラとしてTiny C Compilerを使っているのでコンパイル速度も速い
- Cといってもgauche.cgen.ciseを使ったS式表現なので、C風の構文アレルギーの方でも安心して使える
デメリットとしては、以下のものがあります。
以下はマンデルブロ集合の計算でベンチマークをとった結果です (CPUはPentiumM 2.13GHz)。こういったように、ものによっては数十倍速くなります。
# Schemeバージョンの計算時間 % gosh examples/mandelbrot.scm ;(time (fill-image image size)) ; real 1.190 ; user 1.180 ; sys 0.010 # dyncomp使用時の計算時間 % gosh examples/mandelbrot.scm -c ;(time (fill-image-fast image size)) ; real 0.025 ; user 0.020 ; sys 0.000
雰囲気として、「"特殊なLisp"で書くと自動的に速くなる」といった感じでコンパイルとか気にせず使えますので、気軽にお試しください。