[exerb-dev] Fw: Exerbレポート

Back to archive index

NAKANO Kouichi knuck****@f8*****
2002年 7月 19日 (金) 21:33:47 JST


なかのです。

Yuya Kato <yuya****@katod*****> wrote
at Fri, 19 Jul 2002 00:14:10 +0900 in Re: [exerb-dev] Fw: Exerbレポート
>> 私も少し気になってもう少し調べてみました。酒入りですが。
>> -O2b2xg-とすると最適化されません。
>> おそらくwin32版Rubyでも同じく最適化されてないと思います。
>> 一応Ruby側でも調べましたが、最適化なしと同じコードが吐かれました。

もう少し詳しいことがわかりましたので報告します。
Rubyのソースを、最適化オプション-O2b2xg-と/Od(最適化なし)でコン
パイルして比較しました。
わかったこと、
1 両者でほぼ同じコードが出力された。
2 差異は、前者ではinline指定のある関数がinline展開されているが、
  後者ではそうではない。ヘッダファイルにあるinline指定関数が各オ
  ブジェクト内に生成され、それが呼ばれている。
3 その他は両者とも何一つ最適化らしいことはされていない。

これはwin32版Rubyとしても意図したものじゃないと思うんですけど、
ちょっとわからないので、むこうでも訊いてみます。

>各コンパイルオプションでのmswin32-ruby16.dllのファイルサイズを
>調べてみたところ
>[CFLAGS = -nologo -DNT=1 -Zi -MD -O2b2xg- -G5] = 999,494バイト。
>[CFLAGS = -nologo -DNT=1 -Zi -MD -O2 -Ob2 -Ox -Og- -G5] = 999,494バイ
>[CFLAGS = -nologo -DNT=1 -Zi -MD -G5] = 786,502バイト。

ここで前二つと最後のファイルとでのサイズの差は、inline展開の差だ
と思います。

>ちなみに、なかのさんはどのようにして確認されたのでしょうか?

/FAオプション付でコンパイルして、出力されたアセンブリリストを見て
判断しました。最初は簡単なテストコードを書いて、最適化されていない
らしいということを確認して、その後それぞれのオプションでコンパイル
したRubyソースのアセンブリリストのdiffを取りました。


------------------------------------------------------------
NAKANO Kouichi  Email   knuck****@f8*****




exerb-developer メーリングリストの案内
Back to archive index