Skip to main content
StormMin の既定の探索目的(OBJ-1)は「できるだけ小さいコードを出す」ことです。targetSize オプションを指定すると、目的が「指定サイズ以下の、意味を保存した候補が得られた時点でできるだけ早く止まる」(OBJ-2、satisfaction-style search)に切り替わります。

いつ使うか

Stormworks のビークル Lua には 8192 文字制限があります。制限にちょうど収まればよく、それ以上小さくする必要がない場合は、targetSize を指定することで探索時間を大きく削減できます。targetSize を指定しない場合、探索順・出力は従来の OBJ-1 のまま変わりません。

使い方

Web 版では、左パネルの「目標文字数 (targetSize)」欄に数値を入力します。空欄の場合は従来どおり最小化(OBJ-1)が実行されます。

探索の進み方

探索は次の決定的なチェックポイント列で進みます。
search.stage にはこのいずれかの名前が入ります(full-search は早期終了できず OBJ-1 の全探索へフォールバックしたことを表します)。 目標を満たす候補が見つかった時点で早期終了します。候補の順位付けに wall-clock 時間は使わず、入力ごとの短縮量と固定の cost weight だけで判断するため、実行環境による結果のばらつきは生まれません。

結果の読み方

compile()/compileProject() の戻り値の search フィールドに、探索の状態が含まれます。 目標未達の場合でも、その時点で得られた最良の結果が code として返されます。search.targetMetfalse であれば、出力コードが目標サイズを超えていることを意味します。
目標サイズ探索は最小化の品質を評価するものではありません。「制限を満たすコードをできるだけ早く得る」ための機能であり、同じ入力を OBJ-1(targetSize 未指定)で minify した場合よりコードサイズが大きくなることがあります。