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

yarv-dev:445

From: SASADA Koichi <ko1 atdot.net>
Date: Sun, 6 Mar 2005 16:45:34 +0900
Subject: [yarv-dev:445] Re: Ruby.NET Compiler

  Hiroki Asakawa <ml asakawa.net> wrote :
    [ [yarv-dev:444] Re: Ruby.NET Compiler ]
    at Sun, 06 Mar 2005 14:23:05 +0900

 ささだです。

>>  ふと、swwitch 命令でしないのは何故だろうと思いました。
> ILの switch はですね、0 からの連続した自然数でしか分岐できないのです。
> この場合に switch で分岐させようとすると、穴ぼこだらけのかなり大きな
> テーブルになってしまうので止めました。

 うへ、そういう仕様なのですか。なるほど。JavaVM だとそんなこたなかったんで。

 うーん、他には無いのかー。

 ページが隣だったので見つけたんですが、tail prefix なんてあ
るんですね(tail.call)。CLR は最初からそういうところを考えて
るのですねえ。YARV でも、tail フラグは付けるつもりではありま
すが。


>>  なるほど、配列を作る方法を取ったんですね。私はそれが嫌だからなんとか
>> ならんかなぁ、と粘ってみたので、微妙に仕様を満たせていません。
> いちいち配列を作るのもどうかなぁと思ったので、
> いろいろ考えては見たのですが、うまく作れそうにないので妥協しています。

 配列のサイズを求めるのと、(CLRの)ローカル変数として渡して、
ローカル変数として参照する、とのコスト差ですかね。でも、殆ど
関係ない気がする。

 あと、スレッドセーフとかその辺が気になりますね。

>> > よく分からないですけど、やたら早いですね。
>> > 検証していないので理由が分かりません。
>> 
>>  インライン化とかそういうことしてるんじゃないかしらん、とか思うので、
>> コンパイルした結果を見せてもらえるといいと思うのですが、どうでしょうか。
> 
> 長くなりますが、tarai メソッド部分のコンパイル結果を乗せます。
> コード自体にたいして特徴はないと思います。
> 単純なメソッド呼び出しは Ruby.NET のほうが早いですし、
> 小さな同じような数しか出てこないので、Fixnum の生成
> コストもかからないからではないかと思います。
> JIT も強力ですし。

 見たところインライン化とかしてあるわけではないんですね。うーん、
こんなに桁が2個違うほど速くなるのはなんでだろう(そして、tak 
があんまり変わっていないのは ...)

 しかし、はじめて IL の命令セットをずらずらと眺めましたが、
こんなふうになってるんですね。なんで arg と local 変数が別物
なんだろう。

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

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

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

       427 2005-02-23 15:12 [ko1 atdot.net       ] Ruby.NET Compiler                       
       428 2005-02-24 00:41 ┗[ko1 atdot.net       ]                                       
       429 2005-02-26 16:35  ┗[ml asakawa.net      ]                                     
       430 2005-02-27 16:13   ┗[ml asakawa.net      ]                                   
       431 2005-02-28 23:43    ┗[ml asakawa.net      ]                                 
       436 2005-03-05 19:36     ┣[ko1 atdot.net       ]                               
       438 2005-03-05 21:18     ┃┣[ml asakawa.net      ]                             
       440 2005-03-06 01:03     ┃┃┣[ko1 atdot.net       ]                           
       444 2005-03-06 14:23     ┃┃┃┗[ml asakawa.net      ]                         
->     445 2005-03-06 16:45     ┃┃┃ ┣[ko1 atdot.net       ]                       
       452 2005-03-06 22:26     ┃┃┃ ┗[shudo computer.org  ]                       
       454 2005-03-06 23:28     ┃┃┃  ┗[ko1 atdot.net       ]                     
       447 2005-03-06 17:33     ┃┃┗[zn mbf.nifty.com    ]                           
       439 2005-03-06 00:27     ┃┗[matz ruby-lang.org  ]                             
       441 2005-03-06 01:11     ┃ ┗[ko1 atdot.net       ]                           
       453 2005-03-06 22:41     ┗[shudo computer.org  ]