Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

Verwenden von C++-Profilern

Um die Performance von Godot zu optimieren, müssen Sie zunächst wissen, was zu optimieren ist. Zu diesem Zweck sind Profiler nützliche Werkzeuge.

Bemerkung

Es gibt einen integrierten GDScript-Profiler im Editor, aber die Verwendung des C++-Profilers kann in Fällen nützlich sein, in denen der GDScript-Profiler nicht genau genug ist oder Informationen aufgrund von Bugs im Profiler fehlen.

Godot einrichten

Um nützliche Profiling-Informationen zu erhalten, ist es absolut erforderlich, einen Godot-Build zu verwenden, der Debug-Symbole enthält. Offizielle Binärdateien enthalten keine Debug-Symbole, da diese die Downloadgröße erheblich erhöhen würden.

Um Profiling-Daten zu erhalten, die am besten mit der Produktionsumgebung übereinstimmen (aber mit Debug-Symbolen), sollten Sie Binärdateien mit den SCons-Optionen production=yes debug_symbols=yes kompilieren.

Es ist möglich, einen Profiler auf weniger optimierten Builds laufen zu lassen (z.B. target=template_debug ohne LTO), aber die Ergebnisse werden natürlich weniger repräsentativ für die realen Bedingungen sein.

Warnung

Entfernen Sie nicht Debug-Symbole in den Binärdateien mit dem Befehl strip nach dem Kompilieren der Binärdateien. Andernfalls erhalten Sie keine nützlichen Profiling-Informationen mehr, wenn Sie einen Profiler ausführen.

Benchmarking von Start-/Stoppzeiten

Wenn Sie die Performance beim Starten und Beenden von Godot optimieren wollen, können Sie dem Profiler sagen, dass er die Kommandozeilenoption --quit für die Godot-Binärdatei verwenden soll. Dies wird Godot beenden, kurz nachdem es gestartet ist. Die Option --quit funktioniert mit --editor, --project-manager oder --path <Pfad zum Projektverzeichnis> (der ein Projekt direkt startet).

Siehe auch

Siehe Kommandozeilen-Tutorial für weitere von Godot unterstützte Kommandozeilenargumente.

Profiler-spezifische Anweisungen

VerySleepy

  • Starten Sie zuerst den Godot-Editor oder Ihr Projekt. Wenn Sie den Projektmanager starten, stellen Sie sicher, dass Sie zuerst ein Projekt bearbeiten oder ausführen. Andernfalls kann der Profiler den Unterprozess nicht tracken, da der Projektmanager für jedes bearbeitete oder ausgeführte Projekt einen Unterprozess erzeugt.

  • Öffnen Sie VerySleepy und wählen Sie die ausführbare Godot-Datei in der Liste der Prozesse auf der linken Seite aus:

../../../_images/cpp_profiler_verysleepy_select_process.png
  • Klicken Sie rechts auf den Profile All-Button, um das Profiling zu starten.

  • Führen Sie die Aktionen aus, die Sie im Editor oder im Projekt profilen möchten. Wenn Sie fertig sind, klicken Sie auf Stop (nicht Abbruch).

  • Warten Sie, bis das Ergebnisfenster angezeigt wird.

  • Sobald das Ergebnisfenster angezeigt wird, filtern Sie die Ansicht, um externe Module (wie z.B. den Grafiktreiber) zu entfernen. Sie können nach Modulen filtern, indem Sie eine Zeile suchen, deren Modul mit dem Namen der ausführbaren Godot-Datei übereinstimmt, mit der rechten Maustaste auf diese Zeile klicken und dann Filter Module to <Name der ausführbaren Godot-Datei> in der angezeigten Dropdown-Liste wählen.

  • Ihr Ergebnisfenster sollte nun etwa so aussehen:

../../../_images/cpp_profiler_verysleepy_results_filtered.png

HotSpot

  • Öffnen Sie HotSpot. Klicken Sie auf Daten aufzeichnen:

../../../_images/cpp_profiler_hotspot_welcome.png
  • Im nächsten Fenster geben Sie den Pfad zur Godot-Binärdatei an, die Debug-Symbole enthält.

  • Geben Sie Kommandozeilenargumente an, um ein bestimmtes Projekt auszuführen, mit oder ohne Editor.

  • Der Pfad zum Arbeitsverzeichnis kann beliebig sein, wenn für das Kommandozeilenargument --path ein absoluter Pfad verwendet wird. Ansonsten muss er so gesetzt werden, dass der relative Pfad zum Projekt gültig ist.

  • Stellen Sie sicher, dass Privilegien erhöhen aktiviert ist, wenn Sie über Administratorrechte verfügen. Dies ist zwar für das Profiling von Godot nicht unbedingt erforderlich, stellt aber sicher, dass alle Ereignisse erfasst werden können. Andernfalls fehlen möglicherweise einige Ereignisse in der Aufzeichnung. Ihre Einstellungen sollten jetzt etwa so aussehen:

../../../_images/cpp_profiler_hotspot_record.png
  • Klicken Sie auf Aufzeichnung starten und führen Sie die Aktionen aus, die Sie im Editor/Projekt profilen möchten.

  • Beenden Sie den Editor/das Projekt normal oder verwenden Sie den Profiling stoppen-Button in HotSpot, um die Profil-Erstellung vorzeitig zu beenden. Das vorzeitige Beenden des Profiling kann zu saubereren Profilen führen, wenn Sie nicht an der Beendigungsprozedur der Engine interessiert sind.

  • Klicken Sie auf Ergebnisse anzeigen und warten Sie, bis die Profiling-Visualisierung generiert wird:

../../../_images/cpp_profiler_hotspot_view_results.png
  • Verwenden Sie die Tabs am oberen Rand, um zwischen den verschiedenen Ansichten zu navigieren. Diese Ansichten zeigen die gleichen Daten, aber auf unterschiedliche Weise. Der Tab Flammdiagramm ist eine gute Möglichkeit, um auf einen Blick zu sehen, welche Funktionen die meiste Zeit in Anspruch nehmen. Diese Funktionen sind daher die wichtigsten, die optimiert werden sollten, da eine Optimierung dieser Funktionen die Performance am meisten verbessert.

  • Unten auf allen Tabs außer Zusammenfassung sehen Sie außerdem eine Liste der von der Engine gestarteten CPU-Threads mit der CPU-Auslastung für jeden Thread. So können Sie sehen, welche Threads zu einem bestimmten Zeitpunkt ein Bottleneck darstellen können.

../../../_images/cpp_profiler_hotspot_flame_graph.png

Bemerkung

Wenn Sie nicht möchten, dass der Startvorgang in das Profil aufgenommen wird, können Sie HotSpot auch an einen laufenden Prozess anhängen, indem Sie auf Daten aufzeichnen klicken und die Dropdown-Option Anwendung starten auf An Prozess(e) anhängen setzen.

Dieser auf Prozess-Anhängen basierende Workflow ähnelt dem von VerySleepy.

Xcode Instruments

  • Öffnen Sie Xcode. Wählen Sie Entwicklertool öffnen - Instrumente aus dem App-Menü Xcode:

  • Doppelklicken Sie auf Time Profiler im Fenster Instrumente:

../../../_images/cpp_profiler_xcode_menu.png
  • Klicken Sie im Time Profiler-Fenster auf das Menü Ziel, wählen Sie Ziel wählen... und geben Sie im nächsten Fenster den Pfad zum Godot-Binärdatei, die Kommandozeilenargumente und die Umgebungsvariablen an.

../../../_images/cpp_profiler_time_profiler.png
  • Sie können den Time Profiler auch an einen laufenden Prozess anhängen, indem Sie ihn aus dem Menü Ziel auswählen.

  • Klicken Sie auf den Sofortaufnahme starten-Button, um die Profilerstellung zu starten.

../../../_images/cpp_profiler_time_profiler_record.png
  • Führen Sie die Aktionen aus, die Sie im Editor oder im Projekt profilen möchten. Wenn Sie fertig sind, klicken Sie auf den Stop-Button.

  • Warten Sie, bis die Ergebnisse angezeigt werden.

  • Im unteren Teil des Fensters sehen Sie einen Aufrufbaum für alle gestarteten CPU-Threads und die Übersicht Heaviest Stack Trace.

  • Wählen Sie Systembibliotheken ausblenden im Menü Aufrufbaum (am unteren Rand des Fensters), um externe Module zu entfernen.

  • Sie können die Zeitleiste am oberen Rand des Fensters verwenden, um Details für den jeweiligen Zeitraum anzuzeigen.

../../../_images/cpp_profiler_time_profiler_result.png