私は速度のために C コードの大部分を最適化する時間が迫られており、任意のサイズ(行数、行数、列数) をターゲット行列(行数、列数) に「キャッシュに適した」方法、つまりデータの局所性を尊重する方法で変換します。の典型的なサイズは、約 5000 ~ 15000 行、50 ~ 500 列であり、要素の行単位のアクセスが非常にキャッシュ効率が悪いことは明らかです。 u[r][c]
r
c
v[s][d]
s = c
d = r
u
このトピックについては Web で多くの議論があります (このスレッドの近く) が、私が見る限り、それらのすべてが正方行列のような空間的なケースu[r][r]
、または次元配列の定義について議論していますu[r * c]
。Numerical Recipesのコンテキストで使用される「配列の配列」(同じ長さ) (背景はこちらを参照)。
「車輪の再発明」を省くのに役立つヒントがあれば、非常に感謝しています。
マーティン