同期コンパイル
デフォルトでは、再生モードにおいて、Burst コンパイラーは非同期的にジョブをコンパイルします。同期コンパイルを強制するには、CompileSynchronously
プロパティを true
に設定します。これにより、最初のスケジュールでメソッドがコンパイルされます。
[BurstCompile(CompileSynchronously = true)]
public struct MyJob : IJob
{
// ...
}
このプロパティを設定しない場合、Burst はジョブの最初の呼び出し時にバックグラウンドで非同期的にコンパイルし、その間にマネージ C# ジョブを実行します。これにより、フレームのヒッチを最小限に抑え、応答性に優れた体験を維持できます。
しかし、CompileSynchronously = true
に設定すると、非同期コンパイルが行えなくなります。そのため、Burst のコンパイルにかかる時間が長くなる可能性があります。このようなコンパイルの中断は現在の実行フレームに影響を与え、がたつき (フレーム落ち) を発生させます。その結果、ユーザーは応答性が低下したと感じる可能性があります。
一般に、CompileSynchronously = true
は以下の状況でのみ使用してください。
- 1 回のみ長時間実行されるジョブがある場合。コンパイルしたコードのパフォーマンスが、同期的にコンパイルを行うデメリットを上回る可能性があります。
- Burst ジョブをプロファイルしているときに、Burst コンパイラーからのコードをテストする場合。この際には、ウォームアップを実行して、ジョブの最初の呼び出し以降のタイミング測定値を破棄してください。これは、プロファイリングデータにコンパイル時間が含まれると、結果が不正確になるからです。
- マネージコードと Burst コンパイルコードの違いをデバッグしやすくする場合。