[elektro] gcc kapcsolók

r3flow zoltan.nagy at vivor.hu
Mon Apr 10 17:01:10 CEST 2017



On 2017.04.07. 20:34, Info wrote:
> Főleg, amikor -O3-al nagyobb kódot fordít, mint -O2-vel.


Igen, mert az O1, O2, O3 sebességre optimalizál, a nagyobb kódméret 
azért lesz gyorsabb mert kibontja a ciklusokat azaz kevesebb ugró 
utasítást használ azok ugyanis zabálják a CPU órajelet és hazavágják a 
cache-t. Cserébe nagyobb a kódméret. Az Os az ami méretre optimalizál. 
Illetve az Og ami debug+kicsi.

A kicsi és a gyors nem nagyon megy egyszerre. :)


> Hülyeségekre beriaszt, növekvő kódmérettel egyszercsak
> stratégiát vált, és szétcseszi az addigi részeket, stb.


Nem tapasztaltam még ilyet.


> Ki-mit használ a parancssorban fordításhoz?
> Ezek helyett a csoportos "O"-k helyett keresek egyedi
> megoldást.


Manualban le van írva melyik Ox gyűjtő mögött milyen kapcsolók bújnak 
meg. Ugyanakkor nagyon ritkán lehet értelme kézzel variálni ezekkel mert 
a kód egyszerre kicsi is és gyors is nem nagyon tud lenni.

Úgy érdemes megoldani az optimalizálást, hogy külön forrás fájlokba 
tenni a másképpen optimalizálandó részeket és azokat más Ox-el 
fordítani. Pl. külön egy fájlba pakolod az IT rutinokat meg egy másik 
külön fájlba a DS18B20 kezelő kódot, ezt a kettőt O2/O3-al fordítod a 
többit meg Os-el, stb. Ami meg inline assembly-t tartalmaz forrásfájlt 
azt meg mondjuk O0-val. Bár gcc esetén függvény szinten is meg lehet 
adni attributumokban hogy arra az adott függvényre hogyan optimalizáljon 
csak akkor a kód nem olyan könnyen hordozható.

Z.



More information about the Elektro mailing list