小编Pap*_*obi的帖子

C for循环优化

我正在尝试学习如何优化我的c代码,所以我在互联网上找到了一些文章并重新编写了我的功能,以便它可以更快地执行.当我在没有优化标志的情况下编译它时(第二个函数比第一个函数快约12%),但是当我使用它与gcc -O3时,第二个函数要慢得多(约50%).你知道为什么会这样吗?谢谢你的帮助.

第一个功能:

typedef struct {
    double *data;
    int rows;
    int columns;
} Matrix;

Matrix *matrixMultiplication(Matrix *a, Matrix *b) {
    if(a->columns != b->rows)
        return NULL;
    Matrix *matrix = createMatrix(a->rows, b->columns);
    set(0, matrix);
    for(int i = 0; i < matrix->rows; i++) {
        for(int j = 0; j < a->columns; j++) {
            for(int k = 0; k < b->columns; k++) {
                matrix->data[i * matrix->columns + k] += a->data[i * a->columns + j] * b->data[j * b->columns + k];
            }
        }
    }
    return …
Run Code Online (Sandbox Code Playgroud)

c optimization for-loop

2
推荐指数
1
解决办法
132
查看次数

标签 统计

c ×1

for-loop ×1

optimization ×1