Rekommenderas till nyfikna programmerare!
http://www.agner.org/optimize/optimizing_cpp.pdf
Uppdatering:
trots att jag faktiskt läst igenom filen ovan så missade jag en ganska lätt grej:
Koden nedan ska leta efter den första positiva nollgenomgången i vektorn x.
Originalkoden ser ut så här:
const size_t N=x.size();
size_t Ihigh=0;//index of right point
size_t Ilow=0; //index of left point
for(size_t i=1;i<n;++i) {
if(x(i-1)<=0.0 && x(i)>0.0) {
Ihigh=i;
continue;
} //end if
} //end for
Jag vet att x nästan alltid är negativ i början och positiv på slutet. Därför kommer första villkoret i nästan alltid vara sann och andra villkoret måste också evalueras.
En bättre lösning är alltså att byta ordning på testen så att det första testet är falskt oftast.
const size_t N=x.size();
size_t Ihigh=0;//index of right point
size_t Ilow=0; //index of left point
for(size_t i=1;i<n;++i) {
if(x(i)>0.0 && x(i-1)<=0.0) { //<---här är ändringen
Ihigh=i;
continue;
} //end if
} //end for
2 kommentarer:
Hej!
Även om det bara tar ett par sekunder att arbeta runt felet, så tänkte jag ändå tipsa om att länken är trasig. Kanske har du glömt ett "http://" ?
mvh
Christian
tack, fixat!
hoppas du tyckte det var ett bra lästips.
paul
Skicka en kommentar