なかだです。

At Sat, 10 Aug 2002 20:26:56 +0900,
Takaaki Tateishi wrote:
> ruby-talkを見ている方には重複してしまいますが,ruby-optimizerという
> メソッドの最適化もどきを行う拡張モジュールを紹介させて下さい.
> 
>   http://www.ruby-lang.org/en/raa-list.rhtml?name=Optimization+Module

こういう内部構造に依存するものは、本体に組み込むべきという気が
するので、ruby-devに行ったほうがいいかも。

> 単純に解析木を組換えることでスピードを少し向上させるものです.また末尾
> 再帰除去も行います.現在いくつか不具合はありますが,だいたいうまく動く
> ようです.

不具合というのはどんなところでしょうか。

> 結果は次の通りで,最適化する前のrubyのメソッドと比べるとpythonの方
> が早いです.最適化後には良い勝負になりますが,Pythonの方は9000くら
> いまでは再帰できたようです.

rubyは結構スタックを使いますからねぇ。

それと1.7でコンパイルエラーになりました。あと、nodeDump.cはリン
クする必要はないですよね。


--- optimizer.c~ Sat Aug 10 19:02:41 2002 +++ optimizer.c Sat Aug 10 21:49:20 2002 @@ -505,12 +505,14 @@ RDEBUG({ fprintf(stderr, "eliminate tail return.\n"); }); #if RUBY_VERSION_CODE >= 170 - NODE *ary = node->nd_stts; - if( ary->nd_alen > 1 ){ - NODECPY(node, node->nd_stts); - } - else{ - NODECPY(node, node->nd_stts->nd_head); + { + NODE *ary = node->nd_stts; + if( ary->nd_alen > 1 ){ + NODECPY(node, ary); + } + else{ + NODECPY(node, ary->nd_head); + } } #else NODECPY(node, node->nd_stts);
-- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦