Какие-то проблемы с компилятором, похоже. У меня этот код работает за 36 мс. Это где-то 10 ГБ/с, если ничего не путаю. Вроде нормально. Попробуй включить режим компиляции с оптимизацией.
| | Скрытый текст |
| | #include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define w 10000
#define h 10000
int main(void) {
uint32_t *m = malloc(sizeof(uint32_t) * w * h);
clock_t start = clock();
for (int i = 0; i < h; i++) {
for (int j = 0; j < w; j++) m[i * w + j] = i * w + j;
}
clock_t stop = clock();
printf("%lu ms\n", (stop - start) * 1000 / CLOCKS_PER_SEC);
uint32_t sum = 0;
for (int i = 0; i < h; i++) {
for (int j = 0; j < w; j++) sum += m[i * w + j];
}
return (int) sum;
}
|
| | |