[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends-ml 11978] Re: 「アジャイル ソフトウェア開発の奥義 」第九回議事録 ( 案)



こんばんは、遠藤です。

>>           Q. dynamic キャストは 400 倍遲い ( java )
>>              A. クラスの継承をおっかけるので.. ?
>>           Q. 比較している相手とは ?
>>              up cast と比較して ( donw cast は.. ) ってこと ?
>>              [宿題 ?] 本当に遲いの ?
>>                       # 255 段階の継承をさせて..
>>                       # JDK だと、Compiler ができないとか..
>
>
>   この宿題、どなたか試されましたでしょうか? (^^;
>   また、この点に関する情報はありますでしょうか?

いろんな階層のキャストを、かなりの回数まわしてみて
時間を計ったりしましたが、あるところからJITが効いてくるのか
有意と思えるデータがとれませんでした。

ちなみに継承の深さですが
添付のファイルは100段ほどインタフェース継承階層を作っていますが
コンパイルはできます。
しかし、末端のインタフェースを実装したクラスを作成して
そのインスタンスを生成しようとすると
リカーシブにクラスをロードしにいこうとしてStackOverFlowになりました。
スタックサイズを調整すれば、結果は変わるかもしれません。

コンパイルだけなら1000段くらいでもいけました。

-- 
// Y. Endoh

interface A00 {
}
interface A01 extends A00 {
}
interface A02 extends A01 {
}
interface A03 extends A02 {
}
interface A04 extends A03 {
}
interface A05 extends A04 {
}
interface A06 extends A05 {
}
interface A07 extends A06 {
}
interface A08 extends A07 {
}
interface A09 extends A08 {
}
interface A10 extends A09 {
}
interface A11 extends A10 {
}
interface A12 extends A11 {
}
interface A13 extends A12 {
}
interface A14 extends A13 {
}
interface A15 extends A14 {
}
interface A16 extends A15 {
}
interface A17 extends A16 {
}
interface A18 extends A17 {
}
interface A19 extends A18 {
}
interface A20 extends A19 {
}
interface A21 extends A20 {
}
interface A22 extends A21 {
}
interface A23 extends A22 {
}
interface A24 extends A23 {
}
interface A25 extends A24 {
}
interface A26 extends A25 {
}
interface A27 extends A26 {
}
interface A28 extends A27 {
}
interface A29 extends A28 {
}
interface A30 extends A29 {
}
interface A31 extends A30 {
}
interface A32 extends A31 {
}
interface A33 extends A32 {
}
interface A34 extends A33 {
}
interface A35 extends A34 {
}
interface A36 extends A35 {
}
interface A37 extends A36 {
}
interface A38 extends A37 {
}
interface A39 extends A38 {
}
interface A40 extends A39 {
}
interface A41 extends A40 {
}
interface A42 extends A41 {
}
interface A43 extends A42 {
}
interface A44 extends A43 {
}
interface A45 extends A44 {
}
interface A46 extends A45 {
}
interface A47 extends A46 {
}
interface A48 extends A47 {
}
interface A49 extends A48 {
}
interface A50 extends A49 {
}
interface A51 extends A50 {
}
interface A52 extends A51 {
}
interface A53 extends A52 {
}
interface A54 extends A53 {
}
interface A55 extends A54 {
}
interface A56 extends A55 {
}
interface A57 extends A56 {
}
interface A58 extends A57 {
}
interface A59 extends A58 {
}
interface A60 extends A59 {
}
interface A61 extends A60 {
}
interface A62 extends A61 {
}
interface A63 extends A62 {
}
interface A64 extends A63 {
}
interface A65 extends A64 {
}
interface A66 extends A65 {
}
interface A67 extends A66 {
}
interface A68 extends A67 {
}
interface A69 extends A68 {
}
interface A70 extends A69 {
}
interface A71 extends A70 {
}
interface A72 extends A71 {
}
interface A73 extends A72 {
}
interface A74 extends A73 {
}
interface A75 extends A74 {
}
interface A76 extends A75 {
}
interface A77 extends A76 {
}
interface A78 extends A77 {
}
interface A79 extends A78 {
}
interface A80 extends A79 {
}
interface A81 extends A80 {
}
interface A82 extends A81 {
}
interface A83 extends A82 {
}
interface A84 extends A83 {
}
interface A85 extends A84 {
}
interface A86 extends A85 {
}
interface A87 extends A86 {
}
interface A88 extends A87 {
}
interface A89 extends A88 {
}
interface A90 extends A89 {
}
interface A91 extends A90 {
}
interface A92 extends A91 {
}
interface A93 extends A92 {
}
interface A94 extends A93 {
}
interface A95 extends A94 {
}
interface A96 extends A95 {
}
interface A97 extends A96 {
}
interface A98 extends A97 {
}
interface A99 extends A98 {
}
interface A100 extends A99 {
}

class AImpl implements A100 {
    public static void main(String[] args) {
        AImpl a = new AImpl();
    }
}