 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
jur Član


Pridružen-a: Pet 02 Dec 2005 14:45 Prispevkov: 5142 Aktiv.: 21.70 Kraj: [color=zelena]Ljubljana[/color]
|
Objavljeno: Sre Jun 07, 2006 4:09 pm Naslov sporočila: |
|
|
Citiram: |
To da množenje 8mih števil porabi več procesorja, kot preverjanje vsakega števila posebej, nisem vedel. Se bo treba malo poglobit v procesorske arhihekture... |
Bistvo je v flagih. Pri določenih operacijah sploh ni potrebno preverjati, ali ima spremenljivka vrednost nič, ker se pri procesorju avtomatično postavi zero flag. Primer je pri Delphiju. Pri vključeni optimizaciji, indeks zanke namesto kot je v programu določeno navzgor, začne šteti na dol. Zakaj?
Izvorna koda v pascalu: for i:=0 to 10 (zanka ki šteje od 0 do 10)
Če šteješ na primer od 0 do 10, gre normalno tako:
1. števec = 0
2. loop: povečaj števec za eno
3. a je že deset?
4. če ni, pojdi na loop
5. konec
Optimizirano (štetje nazaj):
1. števec = 10
2. loop: zmanjšaj števec za eno in če ni nič, pojdi na loop //(zero flag se dvigne, če rezultat zmanjšanja nič)
3. konec
Koda je hitrejša (3:5). Stvar je malo približno opisana, ampak tako to gre.
Pri enem izračunu se ne pozna nič. Pri milijonih operacij pa je razlika ogromna.
Včasih je v zanki pomembno, ali štejemo naprej ali nazaj. Ob vklopljeni optimizaciji bo tako stvar izračunana hitreje, rezultati pa bodo napačni. Dobra optimizacija programa je za izvedbo težja, kot zgleda na prvi pogled.
Jur |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 495 dni
Powered by phpBB © 2001, 2005 phpBB Group
|