« アセンブラ気分 | トップページ | ぷりぷろぷりぷら »

サイズ削減計画の掟

いろんなところを漁って調べたiアプリの主にサイズ削減のための掟をリストしてみる。

  • クラスはIApplicationとCanvasの2つだけ
  • メソッドの数は極力抑える
  • フィールド変数の数を抑える
  • paint()を使わない(Graphicsを取得してlock()/unlock()で)
  • Threadを使わない(start()を呼ぶスレッドのみを使う)
  • Vector/Hashtableを使わない(可変長配列はVectorの方がいい)
  • Timerは使わず、System#currentTimeMillisを使う
  • switchは使わず、if elseを使う(case一個で10byte)。その際、条件が満たされる可能性が高いものから並べると、処理が早くなる。
  • 比較は0と行う。ループはダウンカウントにする
  • Obfuscator必須(あとjargとか)
  • 短いタイミング(描画更新等)でSystem#gcをする
  • Display#setCurrentは起動の一回だけ
  • Stringの"+"は使わない
  • packageは使わない
  • Srting#getBytesを2回以上使う場合、一旦配列に落とすとサイズを食う。しかし、そのまま使うと処理を食うw
  • 変数宣言時にnullを代入しない
  • 文字列の連結は、3回以下ならStringで、それ以上ならStringBufferで
  • Stringを初期化付きで宣言するときは、new String("abc")よりも"abc"で
  • 定数は、-1~5(1) / 8bit整数(2) / 16bit整数(3) / それ以上(7) でサイズが変わる。 long型は0,1以外はサイズが変わらない。
  • フィールド定数(クラススコープの定数)は、インスタンスから導くよりクラスから導くと最適化される。
  • ファイル名は短く。拡張子は無くても構わない。
  • クラスにfinalをつける。
  • インスタンス生成は(メイン)ループの外で行う
  • メソッドのパラメータは先頭3つまでが高速。
  • byte,short型はサイズ縮小の為に使っても意味が無い(配列定数は別?)

参照サイト

|

« アセンブラ気分 | トップページ | ぷりぷろぷりぷら »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/19762/710169

この記事へのトラックバック一覧です: サイズ削減計画の掟:

« アセンブラ気分 | トップページ | ぷりぷろぷりぷら »