パフォーマンス・サイズ影響¶
オーバーヘッドはパスと関数複雑度により変動します。下記は代表的なモバイルゲームモジュール (約200関数、Cortex-A55) での実測値です。
| パス | コードサイズ増加 | 実行時オーバーヘッド | メモ |
|---|---|---|---|
str |
+5 – 15% | <1% | 初使用時に復号後ゼロ化、ホット文字列はキャッシュ |
str-aes |
+8 – 20% | <1% | AES-128-CTR; キャッシュ動作は str と同様 |
fla |
+40 – 120% / 関数 | タイトループで 5 – 15% | 小さな BB が多い関数で最悪 |
bcf |
+20 – 50% BBs | <2% | 死コード — 一度も実行されない |
sub |
+10 – 30% / 関数 | 算術中心コードで 3 – 8% | --kagura-sub-iter=1 (デフォルト) を推奨 |
mvo |
+15 – 40% / 関数 | alloca が多いコードで 5 – 12% | pe と併用で最大効果 |
vm |
−30 to +200% | 10 – 50× の減速 | 小さく呼び出し頻度の低い関数 (ライセンスチェック、暗号初期化) に限定 |
anti-debug |
+<1% | 無視可能 (起動時のみ) | 初期化時の一度きりチェック |
bbcheck |
+10 – 20% | 2 – 5% | BB 単位オーバーヘッド; セキュリティクリティカル関数のみで使用 |
推奨¶
BALANCED 強度プロファイル をグローバルに適用し、最も機密度の高い10〜20関数だけ STRONG または kagura_vm でアノテーションすること。これで中央値オーバーヘッドを 5% 未満に抑えつつ、クリティカルパスでの保護を最大化できます。