( geza42 | 2020. 09. 26., szo – 16:21 )

Micsoda? Egy plusz elágazás? Csak maga a szorzás, mint művelet többet fog enni...

Egy plusz elágazás simán jelentősen le tud lassítani egy kicsi (de nagy iterációszámú) ciklust. Ha egy kód feleslegesen tele van téve elágazásokkal, akkor az nagyobb lesz (akár jelentős mértékben, mivel a branch targeteket alignolja a fordító), ergo a kód cache rosszabbul fog teljesíteni. A branch predictor is rosszabbul fog teljesíteni, mivel tele lesz szemetelve feleseges bejegyzésekkel. Ha pedig éppenséggel rosszul prediktálja a CPU a branch-et, akkor nem kell mondanom, mennyivel lesz lassabb a kód.

Szóval ez a hozzáállás, hogy ellenőrizzünk mindent mindenhol működik persze, csak a performance rosszabb lesz. Ami persze sok helyen nem számít annyira, de azért mondjuk egy OS-ben, alap SW-ekben igen. Nem szeretném, hogy telefonom akksiideje azért legyen 30%-kal kevesebb, mert felesleges ellenőrzések vannak benne.