なんでなんでしょう(僕も知らないです。)
a = "1";
if(a eq "1" ||
a eq "2" ||
a eq "3" ||
a eq "4" ||
a eq "5" ||
a eq "6" ||
a eq "7" ||
a eq "8" ||
a eq "9" ||
a eq "10"){
trace(1);
}
これルートの1フレに書いてコンパイルで17KB
a = "1";
if(a eq "1" ||
a eq "2" ||
a eq "3" ||
a eq "4" ||
a eq "5" ||
a eq "6" ||
a eq "7" ||
a eq "8"){
trace(1);
}
これ4KB。
a = "1";
if(a eq "1"){
trace(1);
}else if(a eq "2"){
trace(1);
}else if(a eq "3"){
trace(1);
}else if(a eq "4"){
trace(1);
}else if(a eq "5"){
trace(1);
}else if(a eq "6"){
trace(1);
}else if(a eq "7"){
trace(1);
}else if(a eq "8"){
trace(1);
}else if(a eq "9"){
trace(1);
}else if(a eq "10"){
trace(1);
}
にすれば350バイト。
この話は、もしかしてアドビのFlash Lite 最適化系ノウハウ記事とか、ニューロマジックさんとかの最適化方法が書かれたPDFとか(昔そういうの読んだ記憶がある)載ってる話でしょうか。
いやーこれは知らんかったー。
いつも楽しく観ております。
また遊びにきます。
ありがとうございます。
投稿情報: ビジネスマナー | 2010年8 月 5日 (木) 11:40
通りすがりで失礼します。
FlashLiteの場合、||ではなくorで書くことによって、容量を激減させることができます。
a = "1";
if(a eq "1" or
a eq "2" or
a eq "3" or
a eq "4" or
a eq "5" or
a eq "6" or
a eq "7" or
a eq "8" or
a eq "9" or
a eq "10"){
trace(1);
}
の場合だと212バイトまで軽減されます。
理由は下記になります。ただし、なぜそんな処理になっているかは不明です(笑)
a eq "1" || a eq "2"
というコードの場合は内部的に
( a eq "1" ) or ( not(a ne "1") and a eq "2" )
と置き換えられます。
a eq "1" || a eq "2" || a eq "3"
の場合は
(a eq "1") or
(not (a eq "1") and a eq "2") or
(not (a eq "1") or (not (a eq "1") and a eq "2") and a eq "3")
のように置き換えられます。
厳密には若干違うのですが、そのへんは省略しておきます。
投稿情報: あにぃ♪ | 2010年9 月 7日 (火) 17:15
あー。すごい。参考になります。どんどんコードが大きくなっていくわけですね。ありがとうございます。いったいどこでそういうことを勉強されたのか興味あります。ともかくありがとうございます。
投稿情報: ks | 2010年9 月 7日 (火) 17:25
どこかで習ったというわけではなくて、SWFをバイナリエディタで閲覧して調べただけですよー。
まだ、Flash歴3年ほどのペーペーですから。
投稿情報: あにぃ♪ | 2010年9 月10日 (金) 11:55
>SWFをバイナリエディタで閲覧して調べた
う、すごい。僕はそういうのやる方法を知らないのでペーペーはこちらです。すげーなー。
投稿情報: ks | 2010年9 月10日 (金) 12:51