mezi zidli a klavesnici
Ales Prochaska
prochaska na alsoft.cz
Úterý Únor 28 09:41:50 CET 2012
Slušný překladač ovšem samostatně rozvine konstantní cyklus do makra.
Případně obecný cyklus rozdělí do bloků ve smyslu
for i=0 to max div 4 - 1
Soucet += Pole[i*4]
Soucet += Pole[i*4+1]
Soucet += Pole[i*4+2]
Soucet += Pole[i*4+3]
for i=max div 4 to max
Soucet += Pole[i]
a následně si v druhém průchodu optimalizace uvědomí, že není žádná
příčinná vazba mezi jednotlivými řádky těla prvního cyklu a rozhodí to
do čtyř tasků, takže to v důsledku poběží na čtyřjádru rychleji než
při té ruční úpravě. A upřímně, já bych se s tím tedy ručně do čtyř
tasků nedělil :-)
Ales Prochaska
> Prekladace neumi pracovat poradne s pointery ve smycce. Takze v C staci se
> vybodnout na cykly a hned to bezi rychleji. Treba toto:
> for i=0 to 5
> Soucet += Pole[i]
> Je lepsi zapsat
> Soucet += Pole[0]
> Soucet += Pole[1]
> Soucet += Pole[2]
> Soucet += Pole[3]
> Soucet += Pole[4]
> Soucet += Pole[5]
> Vypada do dlouze, ale po prelozeni je to obvykle kratsi a nekolikanasobne
> rychlejsi
> Michal Gregor
> ----- Original Message -----
> From: "Josef Štengl" <ok1ced na nagano.cz>
> To: "HW-news" <hw-list na list.hw.cz>
> Sent: Tuesday, February 28, 2012 1:42 AM
> Subject: Re: mezi zidli a klavesnici
>> čas je drahý, hodně drahý, proto se to dělá. Proto se kontrolují flagy a
>> tráví se ne tři týdny, ale tři měsíce nad tím aby se ušetřilo 100µs.
>> Protože 100µs znamená jestli SW bude fungovat bezpečně, jestli projde
>> testy a jestli vám za něj zaplatí. 100µs je zatraceně spousta času, za
>> které to stojí!
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
Další informace o konferenci Hw-list