構造体の配列

高速化プログラミング   
トップ  >  メモリジャンプと高速化  > 構造体の配列

構造体の配列

■ 概要

複数の変数の集まりには配列と構造体があります。配列は同一の型の変数、構造体は異なる型の変数の集合体です。その違いはあるものの、両者はメモリ上の構造が非常に似ていて、それらのメンバーはメモリ上で連続に配置されます。同様に配列の配列(2次元配列)も構造体の配列も配列の構造体も構造的に似ています。そのため、2次元配列を扱うときはメモリアクセスのジャンプが起こりやすいと同様に、構造体の配列のときもメモリアクセスのジャンプが起こりやすいともいえます。

今、5つのメンバーA, B, C, D, Eを持つ構造体を考えてみましょう。この構造体の、長さNの配列を定義すると、その構造体の配列が占めるメモリは図1のようになります。

構造体の配列
図1 構造体の配列

図1と同じメンバーのものを定義したいなら、配列の構造体というのも考えられます。構造体のメンバーは長さNの5つの配列A, B, C, D, Eです。この配列の構造体のメモリ配置は図2のようになります。

配列の構造体
図2 配列の構造体

図1の構造体の配列と図2の配列の構造体は、並び方が違いますが、メンバーはまったく同じです。どれも同じ意味の変数の集合体を作ることができるからどれを採用しても大きな違いないはありません。ただ次のサンプルに示すように計算の仕方によっては片方が他方よりよい場合はあります。構造体の配列か配列の構造体かのどれにするかを迷うときは今後行い計算を見極めて選択すべき。

■ サンプル

○ Sample 1: 構造体のメンバーのコピー

- C
- FORTRAN

○ Sample 2: 構造体のメンバーの和の計算

- C
- FORTRAN



はじめに

演算数を減らす

メモリジャンプを減らす

高性能のアルゴリズム

その他



3 5 2 9 4 8