Я пишу программу для расчета продолжительности, которая требуется моему процессору для выполнения одного «FLops». Для этого я написал код ниже
before = clock();
y= 4.8;
x= 2.3;
z= 0;
for (i = 0; i < MAX; ++i){
z=x*y+z;
}
printf("%1.20f\n", ( (clock()-before )/CLOCKS_PER_SEC )/MAX);
Проблема в том, что я повторяю одну и ту же операцию. Разве компилятор не оптимизирует такого рода «Вещь»? Если да, то что мне нужно сделать, чтобы получить правильные результаты?
Я не использую функцию «ранд», поэтому это не противоречит моему результату.
double before
иdouble after
, а затем использоватьbefore = (double)clock();
(вы пропустилиafter
), либо выполнить расчет как(double)(after - before) / CLOCKS_PER_SEC / MAX
- person Weather Vane   schedule 03.03.2015z
после выхода из цикла, вполне возможно, что компилятор заметит это и исключит все вычисления. - person twalberg   schedule 03.03.2015