Я анализирую следующий код с различными опциями компилятора (O0 O1 O2 O3 Os).Первая из итераций выходит из цикла «прогрев кеша».С O0 и O1 время эжекций отличается от 0,00 и выше, поскольку входные параметры (N и ITER) больше.
Проблема возникает, когда я использую опции O2, O3 и Os.Время выведения 0,000.Я прочитал и, возможно, это обнаружение мертвого кода.Является ли это возможным?И почему это происходит?
for(i=0; i<N; i++){
a = i * 128;
b = a / 32;
}
gettimeofday(&inicio, NULL);
for(j=0; j<ITER; j++)
for(i=0; i<N; i++){
a = i * 128;
b = a / 32;
}
gettimeofday(&final, NULL);
tiempo = (final.tv_sec-inicio.tv_sec + (final.tv_usec-inicio.tv_usec)/1.e6);
fprintf(fp,"%lf\n",tiempo);
printf("%lf\t",tiempo);
for(i=0; i<N; i++){
a = i << 7;
b = a >> 5;
}
gettimeofday(&inicio, NULL);
for(j=0; j<ITER; j++)
for(i=0; i<N; i++){
a = i << 7;
b = a >> 5;
}
Может ли кто-нибудь мне помочь?Спасибо