Si consideri il seguente codice:Perché sqrt diventa molto più veloce senza -O2 in g ++ sul mio computer?
#include <cstdio>
#include <cmath>
const int COUNT = 1000000000;
int main()
{
double sum = 0;
for (int i = 1; i <= COUNT; ++i) {
sum += sqrt(i);
}
printf("%f\n", sum);
return 0;
}
Senza -O2
, funziona solo 2.9s sul mio computer, mentre si corre 6.4s con -O2
.
Il mio computer è in Fedora 23, con g ++ 5.3.1.
Ho provato la stessa cosa su Ubuntu 14.04 (con g ++ 4.8), non ha il problema (tutti i 6.4).
E come sei arrivato a questi risultati di temporizzazione - non c'è un meccanismo di temporizzazione nel tuo codice? – kfsone
@kfsone Presumibilmente con il comando 'time'. Non è necessario creare il proprio meccanismo di temporizzazione se uno perfettamente buono è già disponibile. – hvd
Ottengo risultati simili ....!?! (anche con GCC 6.1.0) – Galik