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