float
同じ長さの s の2 つの配列があるとしますn
。
float *a, *b;
int n;
スカラー積を計算したいと思います。単純な方法は次のようになります。
int i;
float result=0;
for (i=0;i<n;i++)
result += a[i]*b[i];
しかし、データの局所性の観点からは、特にn
が大きい場合a
や、 とb
がメモリ内で離れている場合は、これはひどいことです。a
各反復で、とから値を交互にフェッチしますb
。これをより効率的にする方法はありますか?