Bottlenecks Praktikum4

x539
Windoof-User
Windoof-User
Beiträge: 30
Registriert: 24. Nov 2010 15:52

Re: Bottlenecks Praktikum4

Beitrag von x539 » 19. Jan 2012 21:04

gcc interessiert es relativ wenig ob du an eine Funktion mit 'inline' markierst oder nicht. Wenn gcc es für sinnvoll hält wird die Funktion ge-inlined; wenn nicht dann nicht.

Und wenn es eine Funktion nicht kennt kann es das nicht. (Aber mit -flto der linker später anscheinend schon)

Noch ein Bespiel:
Wenn du z.B. sinus/fib/factorial oder ähnlich von einer konstanten berechnest, und gcc kennt die Funktion wird es dir den Wert schon zur compilezeit ausrechnen und den Funktionsaufruf durch den entsprechenden Werte ersetzen. Ansonsten bleibt es bei einem call fib etc.
„Reality is that which, when you stop believing in it, doesn't go away.“ Philip K. Dick

Thomas Huxhorn
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 171
Registriert: 6. Okt 2011 15:25

Re: Bottlenecks Praktikum4

Beitrag von Thomas Huxhorn » 19. Jan 2012 21:24

Ja, schon klar. Ich hab nie wirklich darüber nachgedacht, und immer angenommen, dass der Compiler die Funktion schon kennen wird.
Jetzt lass ich nochmal valgrind drüber laufen. Bin gespannt welche Funktionen nicht mehr auftauchen, weil sie ge-inlied wurden ^^

Thomas Huxhorn
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 171
Registriert: 6. Okt 2011 15:25

Re: Bottlenecks Praktikum4

Beitrag von Thomas Huxhorn » 20. Jan 2012 10:46

Hm ok.
Hab mal valgrind drüber laufen lassen. Es wurden so gut wie alle Funktionen ge-inlined. Außer rand_r() und die von AOSample. Coole Sache :)

Antworten

Zurück zu „Archiv“