[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Coding was:Re: Horizontal Lamerz se rozpadli :(((((((



>  Jeste bych chtel poznamenat pro zaprisahle nepratele hi-level jazyku, ze
v
> pripade
> dnesnich procesoru (ne, opravdu nehovorim o pomalych crapech typu 68030
:-)
> je programovani v assaku naprosty nesmysl , protoze clovek proste neni
> schopen
> efektivne vyuzivat novych vlastnosti CPU, jako je vice pipelines, pripadne
> vybirat nejvhodnejsi instrukce z bohatych instrukcnich setu (krasny
priklad
> je PPC)

S tim naprosto souhlasim. Uroven optimalizace u produktu typu MS VC++ je
takova, ze napsat to v assembleru je vetsinou zbytecna ztrata casu. Kdysi
sem zkousel napsat Mandelbrota pro Windoze (Direct Draw). Celou hlavni
smycku sem napsal v asm. Vypocet trval nakejch 18 vterin. Pak sem plnej
sebeuspokojeni napsal totez v C++ - a vida 13,3 vterin. Neveril sem svejm
ocim, tak sem prinutil prekladac k vypisu do asm. Totalne prehazel moje
vypocty, tagze mi trval asi 10 minut, nez sem pochopil co vlastne dela (a to
je vypocet Mandelbrota velmi primitivni). Tak sem ten kod v asm vzal, pridal
sem tam svoje vylepseni a dostal se na neskutecnejch 12,8 vterin. Tagze cela
namaha nestoji za to.
V posledni dobe sem nebyl spokojenej s rychlosti prolinani vobrazovek pomoci
alfa kanalu v jednom mym programu (1024 x 768 true color). Udelal sem opet
vypis v asm, podival se do knizky na pocet taktu u jednotlivejch instrukci
obzvlast u kombinaci, ktery bych napsal uplne jinak. Zjistil sem, ze neni v
podstate co optimalizovat. Zkusil sem to prepsat pomoci MMX instrukci a
zlepseni bylo nevalny (vobrazky byly velmi podobny a alfa kanal se pocital
jenom u bodu, ktery se lisily z predem predpocitany tabulky).

Rezultat: v asm ma na PC smysl psat jenom MMX/SSE rutiny, ktery soucasny
prekladace uspokojive (pripadne vubec) nezvladaj.