程序一:
for(i=0; i<m; i++)
{
for(j=0; j<n; j++)
{
for(k=0; k<p; k++)
{
c[i][j] = a[i][k] * b[k][j];
}
}
}
程序二:
for(i=0; i<m; i++)
{
for(k=0; k<p; k++)
{
for(j=0; j<n; j++)
{
c[i][j] = a[i][k] * b[k][j];
}
}
}
程序一在循環的時候給c[i][j]賦值時,a[i][k]是連續的,但是b[k][j]跳躍性很大,這樣對於cache的命中率降低了很多,故會稍微比程序二慢一些,當數據量大的時候,這種細微的差別就會體現出來。