4
データ指向設計-1-2を超える構造の「メンバー」では非実用的ですか?
データ指向設計の通常の例は、ボール構造です。 struct Ball { float Radius; float XYZ[3]; }; そして、彼らはstd::vector<Ball>ベクトルを繰り返すアルゴリズムを作ります。 次に、同じことを提供しますが、データ指向設計で実装されます。 struct Balls { std::vector<float> Radiuses; std::vector<XYZ[3]> XYZs; }; 最初にすべての半径で、次にすべての位置などで反復する場合、これは良いことです。ただし、ベクター内のボールをどのように移動しますか?元のバージョンでは、を持っている場合std::vector<Ball> BallsAll、any BallsAll[x]をanyに移動できますBallsAll[y]。 ただし、データ指向バージョンでこれを行うには、すべてのプロパティに対して同じことを行う必要があります(ボールの場合は2回-半径と位置)。しかし、より多くのプロパティがある場合は悪化します。「ボール」ごとにインデックスを保持する必要があり、それを移動しようとすると、プロパティのすべてのベクトルで移動する必要があります。 それは、データ指向設計のパフォーマンス上の利点を損なうものではありませんか?