グリッド内のアイテムを処理しています。アイテムのタイプに応じて、異なるタイプの計算/関数を実行する必要があります。しかし、同じことをしている作業項目間で分岐を行うのは非常に悪いことだと読んだことがあります。これを回避するために、グリッドをタイプごとにグリッドに分割できます (この特定のケースでは 2 つしか必要ありません)...
この場合、何が良いでしょうか。そこに分岐を残すか、2 つのグリッドをタイプごとに 1 つずつ作成しますか? これは、ブランチ内で何が起こるか (計算限界) とグリッドの大きさ (メモリ/レイテンシー限界) に依存することを理解しています。
これらの種類の決定に従うべきいくつかの基本ルールはありますか、それとも一般的にどちらが優れているかについてのコンセンサスはありますか?
編集: (空間) グリッドは、通常の空間グリッドのようにまばらではありませんが、最大約 500.000 の要素を保持する構造体 (構造体あたり約 200 バイト) の密な配列 (空の要素なし) です。
この配列を別のソースから入力し、そのソースを使用して三角形または線分を配置します。
次に、このグリッドを使用して、線分/線分または線分/三角形の衝突検出を行う必要があります。したがって、問題は、この場合、2 つの別個の配列 (引数のために 250.000 要素 x 200 バイトとします) を埋めて、ワークアイテムに線/線または線/三角形のみのバッチ計算を実行させる方が効率的かどうかです.. 500.000x200 バイトの大きなものを 1 つ作成し、各ワークアイテムに特定のタイプで実行する計算を決定させます。