Ich habe die Framerate in MonoGame freigeschaltet über:
this.graphics.SynchronizeWithVerticalRetrace = false;
base.IsFixedTimeStep = false;
Und als Grundlage dafür, wie effizient ich das Spiel aktualisiere und zeichne.
Bei einer Auflösung von 240 x 160, bei der nichts außer einem Bildzähler gezeichnet oder aktualisiert wird, erhalte ich einen FPS-Wert von 9.000 bis 11.000 FPS.
Wenn ich meinen gesamten Code wieder hinzufüge, sinkt er auf ungefähr 1.100 FPS.
Ist dies ein gutes Indiz dafür, dass mein Code die GPU erheblich verlangsamt (10x), und sollte ich mir Sorgen machen? Das Spiel wird mit 60 FPS laufen, also bin ich noch ziemlich weit davon entfernt, aber an welchem Punkt in der freigeschalteten Bildrate sollte ich mir Sorgen machen?
GPU: AMD FirePro W5000 (FireGL V)
monogame
frame-rate
Prüfung
quelle
quelle
Antworten:
Nur grob.
Erstens ist FPS kein lineares Maß . Der Unterschied zwischen 11k FPS und 9k ist extrem gering (0,0000201 Sekunden pro Frame). Der Unterschied zwischen 60 und 2060 FPS (ein Delta mit 2 KBit / s, das auch zwischen 11 KBit / s und 9 KBit / s besteht) ist 0,0161 Sekunden ... viel größer. Es kann daher als Leistungsmetrik gefährlich sein, nur weil große Unterschiede so schlecht sein können oder auch nicht.
Stattdessen Zeit pro Frame zu verwenden, ist etwas einfacher zu überlegen, aber selbst dann ist es immer noch eine sehr weite Sicht auf die Situation. Hier erfahren Sie nur, wie viele Sekunden ein Frame des Spiels dauert. Sie erfahren nicht warum , es sei denn, Sie sehen einen starken Anstieg der Bildzeit unmittelbar nach dem Hinzufügen oder Aktivieren einer bestimmten Funktion.
Es kann ein grundlegendes Barometer sein, um zu entscheiden, ob es an der Zeit ist, detailliertere Profile zu erstellen. Es ist besonders schlecht, FPS zu verwenden, um festzustellen, ob Sie CPU- oder GPU-gebunden sind. Das GPU-Profiling ist nicht so einfach wie das Messen der Zeit auf der CPU (wo sich wahrscheinlich Ihr Timing- und FPS-Berechnungscode befindet).
Wann sollten Sie sich Sorgen machen? Nun, Sie sagten, das Spiel ziele auf 60 FPS ab. Wenn Sie anfangen, in der Nähe oder darunter einzutauchen, müssen Sie wahrscheinlich genauer über Ihre Leistungsprobleme nachdenken. Bis dahin würde ich mich darauf konzentrieren, alles zum Laufen zu bringen, und mich dann darum kümmern, es schnell zu machen .
quelle
Ich verstehe nicht, warum du es nicht benutzen konntest! Denken Sie daran, dass Sie möglicherweise einen anderen Code verwenden müssen, um die Unterschiede zwischen festen und variablen Zeitschritten zu berücksichtigen. Wenn Sie also vorhaben, diesen bei der Veröffentlichung zu beheben, müssen Sie Anpassungen vornehmen. Siehe diesen Artikel: http://rbwhitaker.wikidot.com/time-steps
Könnte auch die CPU sein. Ich würde empfehlen, den in Visual Studio integrierten Profiler regelmäßig auszuführen (oder immer dann, wenn Sie einen großen Bildratenabfall sehen), um Hotspots in Ihrem Code zu finden.
Das hängt natürlich von der Hardware ab, auf die Sie abzielen. Sie müssen Ihren Code anhand der Computer mit den niedrigsten Mindestanforderungen testen, die Sie unterstützen möchten. Wenn es dort mindestens 60 Mal läuft, wäre ich nicht zu besorgt.
quelle