0

どの関数がより速く動作するか教えていただけますか? あるいは、どちらも間違っていて、これを行うためのより良い方法を知っているかもしれません。前もって感謝します。

double* solveDiagonal(double* A, double* B, int n)
{
    double* X = new double[n];

    for(int i = 0; i < n; i++)
        X[i] = B[i] / A[i*n + i];

    return X;
}


double* solveDiagonal(double* A, double* B, int n)
{
    double* X = new double[n];
    double** pA = new double*[n];

    for(int i = 0; i < n; i++)
        pA[i] = &A[i*n];

    for(int i = 0; i < n; i++)
        X[i] = B[i] / pA[i][i];

    delete [] pA;

    return X;
}
4

1 に答える 1

1

間接性と割り当てが多いため、2 番目の方が遅いと思いますが、この種の質問に答えるには、実際にテストとプロファイリングを行う必要があります。

于 2012-12-31T14:28:13.313 に答える