高速化のアイデア
私がRubyで書いているLisp方言、 [Nendo]について。
関数呼び出しが重たいのがわかっている。
例えば、現在の[Nendo]は関数の引数が1個の時でも、次のような引数変換用のcallProcedure関数を通る。
callProcedure( '関数名', @_func, Cell.new( 1 ))
これを
@_func.call( 1 )
のように、目的のクロージャを直接呼びだす様にすれば、オーバーヘッドが無くなる。
これは計測の結果、ボトルネックだと確実に分かっている。 (例えば、fib(20)が10倍ほども高速化された) 先にsrfi-1等のポーティングをやってから取り掛かろう。