IT用語集 › プログラミング › Structure of arrays (SoA)

Structure of arrays (SoA)

プログラミング Svenska → 更新: 2026-10-25

構造体全体の配列ではなく、各フィールドをそれぞれ連続した配列(x[]、y[]、z[])に格納するメモリレイアウト。キャッシュ効率がよく、ベクトル化しやすい。

対になるのが「構造体の配列」(AoS)で、{x,y,z}[] のように各要素のフィールドが隣り合って並ぶ。SoAはこれを裏返し、x[]、y[]、z[] を別々の配列にする。全要素の1つのフィールドだけを触る場合、SoAは必要なキャッシュラインだけを読み、素直な配列はSIMDにもきれいにベクトル化できる。AoSでは、見もしないフィールドに帯域を浪費する。

これはデータ指向設計の土台であり、ECSライブラリがコンポーネントを格納する方法でもある。型ごとにスパースセットを使うことも多い。欠点は、1つの要素の全フィールドが必要なとき、読み出しが複数の配列に散らばることだ。

← 用語集に戻る