Hoofdcategorieën

Bekijk bericht in topic: Optimaliseren van code (if statements)

BooBs for BraiNs
Berichten: 1.478
Reg. datum: 02 december 2002

Als je over low-level optimalisaties wil gaan kun je er ook deze eens op na slaan:
http://lwn.net/Articles/250967/

Bovendien denk ik dat een goeie for-lus net wel bevorderlijk is voor de prestaties. De compiler kan namelijk aannames maken:
C++:
1
2
3
for (int i = 0i < size; ++i)
{
}

Als de compiler hier redeneert dat i < size altijd waar is (en dus een instructie genereert waarin altijd de "true" code geprefereerd wordt, dan heb je altijd:
- 1 enkele pipeline flush door een foute branch
- size - 1 goeie branches.
Dit rendeert vanaf size = 2.

Je kan in veel gevallen de compiler bij if-statements ook een beetje helpen met dit soort aanwijzingen.
Bij gcc kun je bvb __likely() en __unlikely() gebruiken.

Ook kan het in veel gevallen een voordeel zijn om ipv
C++:
1
2
3
if (a || b || c)
{
}

deze
C++:
1
2
3
if (a | b | c)
{
}

te gaan gebruiken (tenzij evaluatie van b en c 'duur' is)

De reden is dat de eerste code gelijk is aan
C++:
1
2
3
4
5
6
7
8
9
if (a)
{
  if (b)
  {
    if (c)
    {
    }
  }
}

Het zijn van die micro-optimalisatie die in hotspots wel wat kunnen opleveren.
Maar zoals anderen al aangaven, roer eerst eens maar eens met de pollepel in de pot voor je met een koffie-lepel begint. Die sinus-berekening is al een goeie eerste start.

Yo momma's so fat, Dr. Martens had to kill 3 cows just to make her a pair of shoes.


Bekijk bericht
Bericht:
Quote bericht:

VNU Media logo Powered by True

© 1998 - 2009 Tweakers.net - Alle rechten voorbehouden

Uitgever van: