0
struct{
    Vector3* centers;
    float*  radii;
    float*  colors;
    unsigned int size;
}Spheres;

struct Sphere{
    Vector3 center;
    float  radius;
    float  color;
};

struct{
    struct Sphere* spheres;
    unsigned int size;
}Spheres;

使用例

void spheres_process(){
    int i;
    for(i = 0; i < Spheres.size; ++i){
         // do something with this sphere
    }
}

2番目のケースは、すべてのデータがインターリーブされてお​​り、同時にキャッシュにロードする必要があるため、空間的な局所性が優れていると思います。どちらの場合も、すべての球を同時に処理します。何か入力はありますか?

4

2 に答える 2

0

cachegrindまたは他のキャッシュプロファイラーの下でデータセットの両方を試すことをお勧めしますか?これは、空間的な局所性などを理論化するよりも効果的かもしれません。コードのアクセスパターンによっては、驚くべき結果が得られる場合があります。

于 2010-11-27T23:56:29.927 に答える
0

重要な詳細、最初のターゲットアーキテクチャが不足しています。

どちらの方法でも、同じ空間的局所性を実現できます。

于 2010-11-27T20:06:54.040 に答える