-7

C での for ループ構造のパフォーマンスについて疑問があります

以下のコードが Linux 64 ビット システムで実行されることを考慮すると、どちらのバージョンの方がパフォーマンスが向上します。

for (i = 0;i<10000;i++)
{
    for (j = 0;j<10000;j++)
    {
        x[i][j] = 0;
    }
}

また

for (i = 0;i<10000;i++)
{
    for (j = 0;j<10000;j++)
    {
        x[j][i] = 0;
    }
}
4

3 に答える 3

1

どちらの場合も、ネストされた for ループを実行しています。

ループは別のループにあるため、時間がかかります

O(log2(n)^2)

したがって、基本的に、2 つのループがネストされている場合、その中のアクションに関係なく、n*n = n^2 になります。ループがネストされていない場合、 n+n = 2n かかります

于 2013-09-27T13:54:58.000 に答える
0

あなたは自分で見つけることができます:

/* Example 1 */

time_t start = clock();
for (i = 0;i<10000;i++)
{
    for (j = 0;j<10000;j++)
    {
        x[i][j] = 0;
    }
}
float t = (float)(clock() - start)/CLOCKS_PER_SEC; 
printf("%f\n", t);

/* Example 2 */

start = clock();
for (i = 0;i<10000;i++)
{
    for (j = 0;j<10000;j++)
    {
        x[j][i] = 0;
    }
}
t = (float)(clock() - start)/CLOCKS_PER_SEC; 
printf("%f\n", t);
于 2013-09-27T13:51:36.033 に答える