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。これをより効率的にする方法はありますか?