szablony, funkcje inline

szablony, funkcje inline
MI
  • Rejestracja:prawie 16 lat
  • Ostatnio:ponad 10 lat
0

Cześć :)
Fragment Thinking in C++

Oczywiście, niekiedy chcemy, aby funkcje składowe klasy nie były definicjami funkcji inline. W takim przypadku kompilator musi "widzieć" deklarację template przed definicją funkcji składowej

Czylli co to oznacza? Że każda metoda, która jest definiowana w miejscu deklaracji jest tworzona jako funkcja inline?

KA
  • Rejestracja:około 11 lat
  • Ostatnio:ponad 10 lat
  • Postów:71
2

Jeśli poziom optymalizacji jest wysoki i kompilator uzna to za stosowne to potraktuje funkcję jako funkcję inline. Jeśli chcesz wyłączyć tą funkcję wystarczy dodać opcję: "-fno-inline-functions".

MI
  • Rejestracja:prawie 16 lat
  • Ostatnio:ponad 10 lat
0

dlaczego taki zabieg jest optymalizacją?

n0name_l
  • Rejestracja:ponad 12 lat
  • Ostatnio:prawie 5 lat
  • Postów:2412
2

Bo szybciej jest kupic mleko w sklepie obok domu niz jechac po to do niemiec.

MI
  • Rejestracja:prawie 16 lat
  • Ostatnio:ponad 10 lat
0

dobrze, ale jeżeli takie to oczywiste, to dlaczego nie wszystkie funkcje sa inline?

n0name_l
  • Rejestracja:ponad 12 lat
  • Ostatnio:prawie 5 lat
  • Postów:2412
1

Bo po samochod do niemiec juz mozna sie przejechac.

MI
  • Rejestracja:prawie 16 lat
  • Ostatnio:ponad 10 lat
0

ok, w takim razie co jest wymiernym miernikiem dla kompilatora, że warto jechać do Niemiec, lub też nie warto?

n0name_l
  • Rejestracja:ponad 12 lat
  • Ostatnio:prawie 5 lat
  • Postów:2412
2

Duzo rzeczy, ale jedne z kluczowych to:

  1. Czy funkcja moze byc wrzucona w miejsce wywolania (np. rekursywne wywolania nie moga (w duzej czesci przypadkow))
  2. Poziom skomplikowania
  3. Rozmiar powiekszenia kodu po inlinowaniu
  4. Czy do funkcji odwolujemy sie przez wskaznik

Tak naprawde to kompilatory robia strasznie duzo rzeczy z tym czy inlinowac czy nie, czy nawet czesciowo inlinowac.

http://msdn.microsoft.com/en-us/library/z8y1yy88.aspx Chociazby tu masz troche jak to dziala w jedynym slusznym kompilatorze.

edytowany 1x, ostatnio: n0name_l
MI
  • Rejestracja:prawie 16 lat
  • Ostatnio:ponad 10 lat
0

Chociazby tu masz troche jak to dziala w jedynym slusznym kompilatorze.

Dlaczego tak uważasz, że ten słuszny, a inne nie?
Nie prowokuję w żaden sposób, chcę po prostu coś się dwoedziec :)

edytowany 1x, ostatnio: mir
n0name_l
Bo jest od M$. Nowy w internecie? :P
MI
jakoś mnie to zupełnie nie przkonuje, że to powód.
n0name_l
To jest powod, dlaczego tak napisalem a nie inaczej. Ale to nie jest 'jedyny sluszy kompilator' doslownie. Sam uzywam clanga ;p
spartanPAGE
a mnie zastanawia, dlaczego oznaczyłeś własną odpowiedź jako satysfakcjonującą. Rozdwojenie jaźni czy narcyzm? :P
MI
obawiam się, że ani to ani to :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.