Question

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

contre

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

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

exemple d'utilisation

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

Je pense que le second a une meilleure localisation spatiale puisque toutes les données sont intercalées et doit être chargé dans le cache en même temps. Dans les deux cas, je vais le traitement de toutes les sphères en même temps. Toute entrée?

Était-ce utile?

La solution

Je vous suggère d'essayer les deux avec vos données sous cachegrind ou un autre profileur de cache? Cela pourrait être plus efficace que théoriser sur la localité spatiale, etc. En fonction des modèles d'accès de votre code, vous pouvez trouver des résultats surprenants.

Autres conseils

Nous ne disposons pas des détails importants, l'architecture cible pour commencer.

Les deux voies peuvent atteindre la même localité spatiale.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top