[前][次][番号順一覧][スレッド一覧][生データ]

yarv-dev:386

From: SASADA Koichi <ko1 atdot.net>
Date: Mon, 20 Dec 2004 18:38:25 +0900
Subject: [yarv-dev:386] Re: IronPython

 ささだです.

> JIT では定数たたみ込みや定数伝搬、メソッドのインライン化やループ展開
> など一般的なコンパイラで行っていることはすべて行っているようです。
> 次のバージョンではよりいっそう高速化される見込みだとか。
> 
> ただ、Ruby.NET の場合、Fixnum がオブジェクトなので定数関連の
> 最適化は利用できないですね。。

 やっぱ奴らは強いですねえ.


>>> しかし、メソッドをくっつけるってなんだろう。
> 
> ささださんの発表を聞いて、少しは最適化も考えないとと思い、
> 多少工夫しているのですが、
> while i < 4
> こんなので、今は i < 4 の結果を i.___op_LT(4) を呼び出して、
> true or false が返ってきて、それを false と nil と比較して
> どちらでもなかったら繰り返すという、( true も nil も false
> もオブジェクトのインスタンスになっている ) 無駄が多いので、
> i が Fixnum だったら i.___op_LT(4) をインライン化しています。
> それでもその後に false でも nil でもないことを確認しているので
> 比較とジャンプを一気にやる命令列を生成するべきだなぁと。。

 Fixnum#< を再定義できますか?

 なーんていうと小姑みたいで嫌だな.9月のときにも言ったんです
が,その辺は割り切って「Ruby にこの制限を課したらこんなに速い
ものが出来ます!」という主張のほうが幸せになれそうな気がしま
す.しかも,「この制限」は,普通の人は困らない制限(普通の人は
Fixnum#< の再定義なんてしない)だ,とか.たとえば,Fixnum をオ
ブジェクトじゃなくてプリミティブ型でやってしまって,その整合性
を取るためにちょっと頑張る,とか.

 ただ,プリミティブ型を利用する場合,自動的に Bignum に拡張す
る工夫は必要になるかとは思いますが.

 あ,コンテナに入れるとか,どうのってのが面倒になったりするん
だろうか..NET だと.


> 最適化を考え出すと、ますますコンパイラが複雑になり、時間も
> なくなってくるのでほどほどに、と考えていますが。。

 そうですね.まずは動かすことに・・・って人のこと言えない.

-- 
// SASADA Koichi at atdot dot net
//


--
ML: yarv-dev quickml.atdot.net
使い方: http://www.atdot.net/~ko1/quickml

[前][次][番号順一覧][スレッド一覧][生データ]

       380 2004-12-20 00:33 [ko1 atdot.net       ] IronPython                              
       381 2004-12-20 00:40 ┗[shudo computer.org  ]                                       
       382 2004-12-20 08:44  ┣[ml asakawa.net      ]                                     
       383 2004-12-20 11:07  ┃┣[shudo computer.org  ]                                   
       390 2004-12-20 20:16  ┃┃┗[ml asakawa.net      ]                                 
->     386 2004-12-20 18:38  ┃┗[ko1 atdot.net       ]                                   
       389 2004-12-20 20:06  ┃ ┗[ml asakawa.net      ]                                 
       385 2004-12-20 18:31  ┗[ko1 atdot.net       ]                                     
       388 2004-12-20 18:46   ┗[matz ruby-lang.org  ]