« 「UIEngine的やってはならない」をそろそろまとめよう | メイン | 思い出と口コミと知らぬ間に広がる世界 »

UJMLサンプル109:UIEngineカプセル化とファイルサイズ(2006/05/05)

Samples_109_filesize 既存アプリのリファクタリングを進めていたら、コンパイル後のバイナリファイルサイズがずいぶん増えていた。どうやら、コンポーネント化とカプセル化を進める中で増えたらしい。

 今回、特定の処理をコンポーネント化し内部変数を外部から隠蔽するために Setter と Getter メソッドを用意したが、どうもそれが積もりに積もってファイルサイズを増やしてしまったようだ。


 試みに、簡単なサンプルを作り、コンパイル後のファイルサイズを比べてみた。一つ目が55バイトで二つ目が75バイトだった。コンポーネント側の差はそんなになかったとしても、呼び出し側が変数→関数に置き換わることの影響が大きいのかもしれない。詳しく調べた方がいいのだろうが次回に持ち越しということで。今回の教訓は、ファイルサイズが増えると困ることもあるので気をつけよう、といったところか。

---main.ujml(Setter/Getter無し)

<ujml>
    <application>
        <state-machines>
            <state-machine name="Hoge">
                <variables>
                    <var name="mHuga" type="int" visibility="public"/>
                </variables>
            </state-machine>
        </state-machines>
        <script>
            Hoge.mHuga = 12345;
        </script>
    </application>
</ujml>

---

---main2.ujml

<ujml>
    <application>
        <state-machines>
            <state-machine name="Hoge">
                <variables>
                    <var name="mHuga" type="int"/>
                </variables>
                <functions>
                    <function name="setHuga" type="void" visibility="public">
                        <parameters><var name="val" type="int"/></parameters>
                        <script>mHuga=val;</script>
                    </function>
                    <function name="getHuga" type="int" visibility="public">
                        <return><eval>mHuga</eval></return>
                    </function>
                </functions>
            </state-machine>
        </state-machines>
        <script>
            Hoge.setHuga(12345);
        </script>
    </application>
</ujml>

---

トラックバック

この記事のトラックバックURL:
https://www.typepad.com/services/trackback/6a00d8341c2e2e53ef00e5509488b58833

UJMLサンプル109:UIEngineカプセル化とファイルサイズを参照しているブログ:

コメント

この記事へのコメントは終了しました。