Kapitel 5. Fragen und Antworten

5.1. Wozu ist KCachegrind gut?
5.2. Was ist der Unterschied zwischen Incl. und Self?
5.3. Wenn ich in der Aufrufgraph-Ansicht auf eine Funktion klicke, werden für main() die gleichen Kosten angezeigt, wie für die gewählte Funktion. Sollten diese nicht immer 100 % betragen?

5.1.

Wozu ist KCachegrind gut?

KCachegrind ist nützlich für die späte Software-Entwicklungs-Phase Profiling. Wenn man keine Anwendungen entwickelt, dann braucht man KCachegrind nicht.

5.2.

Was ist der Unterschied zwischen Incl. und Self?

Dies sind Kosteneigenschaften für Funktionen hinsichtlich einiger Ereignistypen. Da sich Funktionen gegenseitig aufrufen können, ist es sinvoll, zwischen Kosten zu unterscheiden, die die Funktion selbst verursacht (Exklusivkosten) und solchen, die alle aufgerufenen Funktionen berücksichtigt (Inklusivkosten).

Also werden Sie für main() immer Inklusivkosten von nahezu 100 % haben, wogegen die Exlusivkosten vernachlässigbar sind, wenn die eigentliche Arbeit in einer anderen Funktion erledigt wird.

5.3.

Wenn ich in der Aufrufgraph-Ansicht auf eine Funktion klicke, werden für main() die gleichen Kosten angezeigt, wie für die gewählte Funktion. Sollten diese nicht immer 100 % betragen?

Sie haben eine Funktion unterhalb von main() gewählt, die geringere Kosten als main() selbst hat. Für jede Funktion wird nur der Teil der Kosten angezeigt, der von der aktivierten Funktion verursacht wird. Daher können die Kosten für eine Funktion nie höher sein als die der aktivierten Funktion.