Я хочу оптимизировать код 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 мс для этих вложенных циклов очень велики, и, возможно, это вызвано серьезной ошибкой. рассматривать.