проблема производительности в коде c ++ с вычислением цифр c - PullRequest
1 голос
/ 25 января 2020

Я хочу оптимизировать код C / C ++. Проанализировав все аспекты кода, я обнаружил, что функция ниже занимает около 99% времени выполнения.

for (l = i+1; l < m->_n ; ++l)       /* m->_n is about 650      this loop takes about 100 ms   */
{
    m = add_line(m, l, i);

    deg[l] = (deg[i] > deg[l]) ? deg[i] : deg[l];
}

/* add_line function */
MAT* add_line (MAT* mat, int dst, int src)
{
    int j;

    for (j = 0; j < mat->_m; ++j)           // mat->_m is about 650
        mat->_v[dst][j] = (mat->_v[dst][j] + mat->_v[src][j]) & 1;

    return mat;
}

/* also MAT is a struct. _n & _m are width and height of the matrix. */
typedef struct                                      
{
    int _n, _m, **_v;
} MAT;

Интересно, если я использую 2D c ++ std :: vector вместо структуры MAT, может быть, скорость растет быстрее? Есть ли какое-либо другое решение для оптимизации этого кода?

Я думаю, что 100 мс для этих вложенных циклов очень велики, и, возможно, это вызвано серьезной ошибкой. рассматривать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...