Semantik von GCC hot-Attribut

Nehme an, ich habe eine compilation-unit, bestehend aus drei Funktionen, A, B, und C. A wird einmal aufgerufen, der von einer Funktion extern zu der compilation-unit (z.B. es ist ein Einstiegspunkt oder callback); B aufgerufen wird oft durch Einen (es ist z.B. aufgerufen, in einer engen Schleife); C wird einmal aufgerufen, die von jedem Aufruf von B (es ist z.B. eine library-Funktion).

Den gesamten Weg über Eine (Weitergabe durch B und C) ist performance-kritisch, wenn die Leistung von Einem selbst ist nicht-kritisch (wie die meiste Zeit wird damit verbracht, in B und C).

Was ist der minimale Satz von Funktionen, die sollte man kommentieren mit __attribute__ ((hot)) um die Wirkung aggressiver Optimierung dieser Pfad? Übernehmen, die wir nicht verwenden -fprofile-generate.

Sinngemäß: Tut __attribute__ ((hot)) bedeutet "Optimierung der Körper von dieser Funktion", "optimieren Sie diese Funktion aufrufen", "alle optimieren Nachkomme ruft diese Funktion macht", oder eine Kombination davon?

Die GCC info-Seite nicht klar auf diese Fragen eingehen.

  • __attribute__ ((hot)) vielleicht gewinnen Sie etwas, aber Sie bessere Ergebnisse aus, dass zuerst B und C static inline und Optimierung mit -O3.
  • Ich gehe davon aus, dass diejenigen, die bereits ergriffen worden.
InformationsquelleAutor Chris Pacejo | 2013-02-22
Schreibe einen Kommentar