記憶體階層與效能
如上將僅加總x座標的處理,改寫成陣列結構(各成分分別放入不同的陣列)後容易變快,其原因為下列何者?
struct P { float x, y, z, mass; };
struct P p[N];
for (i = 0; i < N; i++)
sx += p[i].x;
- A因為維持結構的陣列時,編譯器無法產生只讀取x的指令
- B因為分成不同的陣列後,浮點數的計算會變成更高的精度
- C因為只有x連續排列,載入的快取行中不會混入不需要的成分
記憶體階層與效能
struct P { float x, y, z, mass; };
struct P p[N];
for (i = 0; i < N; i++)
sx += p[i].x;