Anonymní profil Ovrscout – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Ovrscout – Programujte.comAnonymní profil Ovrscout – Programujte.com

 

Příspěvky odeslané z IP adresy 178.255.168.–

Ovrscout
C / C++ › trojúhelník - optimalizace
26. 11. 2012   #167670

Optimalizovat by to chtělo hlavně funkci line()

  • místo stálého dereferencování ztable[y*800+x]   si spočítat ukazatel na začátek řádky a pak ho inkrementovat stejně jako to máš u *pix
  • výpočet barvy bych skusil provádět pomocí sčítání místo násobení, stejně jako to děláš pro výpočet z
    (ale přínos je potřeba změřit, jestli někjaký bude)
  • sklon Z v závislostni na posunu x o 1 je pro trojůhelník všude stejný a není nutné ho počítat pro každou čáru.Navíc je lepší ho počítat přez delší rozsah - např definiční body trojuhelnika které jsou na x ose od sebe nejvice vzdaleny.
    (Obdobně to samozřejmně platí i pro závislost na posunu dle y o 1 což by možná šlo využít ve funkci triangl)

Co se týká funkce triangl

  • Sklon trojuhelnika k nějaké ose je vsude stejný(viz výše) takže by nemnělo být nutné počítat mz2, mnělo by stačit do funkce line předat jen mz1 a sklon dle osy x(viz výše)
  • Volání funkce a předávání parametrů stojí nemalou režiji. Někdy pomůže označit funkci jako inline(ale to je jen nápověda pro překladač a ten to může ignorovat) ale spíš je nutné ten kód rozepsat. Myslím že po zjednodušení funkce line by šlo to kreslení vodorovné čáry napsat do funkce triangl přímo, tak složité makro moc nedoporučuju. Možná bych pro přehlednost vyrazil tu část kódu která vykresluje pouze první bod a vykreslení provedl jen pomcí cyklu.

Rejp, rejp - nic osobního :) Na čtení není ten zdroják nic moc, sem tam nějakej komentář nebo lepší pojmenování funkce(line?) by nebylo od věci, nakonec jsem se tím ale jakžtakž prokousal a vypadá to jako moje pokusy z pascalu, no škoda že už jsem ty zdrojáky v průběhu času ztratil. - no teď se vážně cítím jako stařík, fňuk fňuk nostalgie.

Jinak to vypadá dost dobře, obzvlášť použití posunu pro nahrazení desetinných výpočtů pomocí posunu se mi moc líbí to mne tenkrát myslím nenapadlo.

P.S. Jako u všech optimalizací, je třeba přínos změřit. některé se mohou projevit málo nebo vůbec a nebo třeba jen v "ostré" verzi bez ladících informací které sami osobě mají velkou režiji.Vliv se může mšnit také v závislosti na optimalizaci.

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý