2010-11-27 10 views
0
すべてのデータがインターリーブされ、同時にキャッシュにロードされなければならないので、私は2番目の場合は、より良い空間的局所性を持っていることを考えてい

構造設計の方が空間的に優れていますか?

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 
    } 
} 

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

。どちらの場合も、私はすべての球を同時に処理します。どんな入力?

答えて

0

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

0

我々は重要な詳細が不足している、ターゲットアーキテクチャを開始する。

両方の方法で同じ空間的局所性を実現できます。

+0

対象アーキテクチャはx86で、GCC 4.5.0を使用しています。他にどんな詳細がありますか? – ytrp

関連する問題