我正在处理网格中的项目,根据项目的类型,需要执行不同类型的计算/功能。但是我读过分支在做同样事情的工作项之间是一件非常糟糕的事情。为了避免这种情况,我可以将网格拆分为每种类型的网格(在这种特殊情况下我只需要两个)......
在这种情况下会更好吗?将分支留在那里,或者为每种类型制作两个网格?我知道这取决于分支内部发生的情况(计算界限)与网格的大小(内存/延迟界限)。
这些决定是否有一些基本规则要遵循,或者是否有共识总体上哪个更好?
编辑:(空间)网格并不像通常的空间网格那样稀疏,而是结构的密集数组(没有空元素)(每个结构约 200 个字节),最多可容纳约 500.000 个元素。
我从另一个源填充这个数组,使用那个源我把三角形或线段放在那里。
然后使用这个网格,我需要进行线段/线段或线段/三角形碰撞检测。所以问题是在这种情况下填充两个单独的数组是否会更有效(为了论证,让我们说 250.000 个元素 x 200 字节)并让工作项仅对线/线或线/三角形进行批量计算..或者有一个大的 500.000x200 字节,并让每个工作项找出给定类型要执行的计算。