Kirchhoff Skrevet 10. september 2012 Del Skrevet 10. september 2012 (endret) Fant ut av det nå. temp = i%width; Dette kjøres 1-1.5M ganger, det som tar mesteparten av tiden. Det er tydeligvis 2x raskere per Hz med en c2d prosessor enn en phenom II prosessor. Orginalt innlegg Hei, jeg skriver noe c++ kode som jeg gjerne vil skal gå rimelig raskt. Det er absolutt ikke noe pen eller høykvalitetskode. void funksjon1(vector&--#60;unsigned char&--#62; &thumbs, int bpos[], int width, unsigned char *bokstaver) thumbs.erase (thumbs.begin(),thumbs.end()); for(int i=bpos[pos];i&--#60;=((bpos[pos+2]*width)+bpos[pos+1]);i++) { temp = (i%width); if(temp&--#62;=bpos[pos] && temp&--#60;=bpos[pos+1]) { if(bokstaver[i]&--#62;100) { thumbs.push_back (0); }else { thumbs.push_back (1); } } } Denne koden tar en firkant av et større gråskala bilde til svart hvitt vektor. Dette gjøres mange ganger, og "vector&--#60;unsigned char&--#62;thumbs " blir aldri større enn rundt 5000. Derfor bruker jeg thumbs-&--#62;reserve(10000); før jeg begynner å kalle "funksjon1". Funksjonen blir kalt ca 200 ganger, og den returnerer en thumbs funksjon på mellom 2000 og 5000 unsigned chars hver gang. På min c2d laptop (2.53GHz penryn 3MB L2) tar all koden min rundt 500/280 ms debug/release mode. På min Phenom II på 3,6 GHz tar det hele koden 800/510 ms. Og 700/490 ms av koden går kun til den funksjonen, noe som jeg synes er merkelig ettersom kun en brøkdel av antall push_backs skjer i denne funksjonen. Noen peiling? Endret 10. september 2012 av O:M:A Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå