计算此代码的操作计数

时间:2014-12-05 07:07:28

标签: c++

我试图理解下面给出的代码的操作计数。

void add(matrix a, matrix b, matrix c, int m, int n)
{
    for(int i = 0; i < m; i++)
    {
        count++; //for 'for' i   -------(a)
        for(int j = 0; j < n; j++)
        {
            count++; //for 'for' j  -------(b)
            c[i][j] = a[i][j] + b[i][j];
            count++;    //for assignment ------(c)
        }
        count++;    //for last time of 'for' j  ------(d)
    }

    count++;    //for lastime of 'for' i ---------(e)
}

作者使用变量计数来计算操作计数。我知道声明性语句(int i = 0; int j = 0)的操作计数为0。

每次for循环运行时,以下表达式应该为i&lt;米; i ++只有1次操作i&lt; m被执行。

for(int i = 0; i < m; i++)

for(int j = 0; j < n; j++)

但作者只计算了一次(a)和(b)。这是否意味着我&lt; m和j&lt; n不按运算计算?

在此行中,操作计数应为2:1加法运算和1个赋值操作。

 c[i][j] = a[i][j] + b[i][j];

他再次计算过一次(c)。

由于这些问题,我不知道为什么他在(d)和(e)增加了计数。

    //Simplified program with counting only
    line void add (matrix a, matrix b, matrix c, int m, int n)
    {
        for(int i = 0; i < m; i++)
        {
            for(int j = 0; j < m; j++)
                count += 2;

            count += 2;
        }

        count++;

    }

谢谢:)

0 个答案:

没有答案