targetSize オプションを指定すると、目的が「指定サイズ以下の、意味を保存した候補が得られた時点でできるだけ早く止まる」(OBJ-2、satisfaction-style search)に切り替わります。
いつ使うか
Stormworks のビークル Lua には 8192 文字制限があります。制限にちょうど収まればよく、それ以上小さくする必要がない場合は、targetSize を指定することで探索時間を大きく削減できます。targetSize を指定しない場合、探索順・出力は従来の OBJ-1 のまま変わりません。
使い方
探索の進み方
探索は次の決定的なチェックポイント列で進みます。search.stage にはこのいずれかの名前が入ります(full-search は早期終了できず OBJ-1 の全探索へフォールバックしたことを表します)。
目標を満たす候補が見つかった時点で早期終了します。候補の順位付けに wall-clock 時間は使わず、入力ごとの短縮量と固定の cost weight だけで判断するため、実行環境による結果のばらつきは生まれません。
結果の読み方
compile()/compileProject() の戻り値の search フィールドに、探索の状態が含まれます。
目標未達の場合でも、その時点で得られた最良の結果が
code として返されます。search.targetMet が false であれば、出力コードが目標サイズを超えていることを意味します。
目標サイズ探索は最小化の品質を評価するものではありません。「制限を満たすコードをできるだけ早く得る」ための機能であり、同じ入力を OBJ-1(
targetSize 未指定)で minify した場合よりコードサイズが大きくなることがあります。