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 ]