CapFrameX - Capture und Analyse Tool

@ZeroStrat Was macht die neue Version? Ich habe jetzt ein paar Benches zusammen.

Dieser hier ist besonders gelungen, da ich wegen eines Mousecursor Bugs mittendrin aus dem Spiel getabbt bin.
770458



770460
 
Du musstest ja auch unbedingt jetzt noch mit dem Capture Zeug anfangen :D
 
Gleich ist die 1. Beta (eigentlich muss man Release Candidate sagen ) fertig. Es werden wahrscheinlich 3-4 Stufen bis zum Release....
Ergänzung ()

Hier, hab ich übrigens gerade mit CapFrameX aufgenommen (ist natürlich nur ein kleiner Teil des Datensatzes):

Application,ProcessID,SwapChainAddress,Runtime,SyncInterval,PresentFlags,AllowsTearing,PresentMode,WasBatched,DwmNotified,Dropped,TimeInSeconds,MsBetweenPresents,MsBetweenDisplayChange,MsInPresentAPI,MsUntilRenderComplete,MsUntilDisplayed
r5apex.exe,15400,0x0000022396B19360,DXGI,0,0,0,Composed: Copy with GPU GDI,1,1,0,0.092903,51.036,50.029,0.231,17.009,30.258
r5apex.exe,15400,0x0000022396B19360,DXGI,0,0,0,Composed: Copy with GPU GDI,1,1,0,0.143872,50.969,50.102,0.213,17.893,29.391
r5apex.exe,15400,0x0000022396B19360,DXGI,0,0,0,Composed: Copy with GPU GDI,1,1,0,0.194873,51.001,50.043,0.226,16.457,28.433
r5apex.exe,15400,0x0000022396B19360,DXGI,0,0,0,Composed: Copy with GPU GDI,1,1,0,0.245805,50.932,50.094,0.203,18.158,27.596
r5apex.exe,15400,0x0000022396B19360,DXGI,0,0,0,Composed: Copy with GPU GDI,1,1,0,0.296888,51.083,50.066,0.209,17.117,26.579
r5apex.exe,15400,0x0000022396B19360,DXGI,0,0,0,Composed: Copy with GPU GDI,1,1,0,0.347920,51.032,58.372,0.222,19.090,33.919
r5apex.exe,15400,0x0000022396B19360,DXGI,0,0,0,Composed: Copy with GPU GDI,1,1,0,0.399069,51.149,50.103,0.198,17.818,32.874
r5apex.exe,15400,0x0000022396B19360,DXGI,0,0,0,Composed: Copy with GPU GDI,1,1,0,0.449960,50.891,50.028,0.211,19.151,32.011
r5apex.exe,15400,0x0000022396B19360,DXGI,0,0,0,Composed: Copy with GPU GDI,1,1,0,0.500942,50.983,50.101,0.217,17.389,31.129
r5apex.exe,15400,0x0000022396B19360,DXGI,0,0,0,Composed: Copy with GPU GDI,1,1,0,0.553993,53.051,50.031,0.244,18.442,28.109
 

Anhänge

Zuletzt bearbeitet von einem Moderator:
  • Gefällt mir
Reaktionen: Wolfgang, Taxxor und cm87
Kann man die Datei auch irgendwie mit CapframeX öffnen? Einfach in den Capture Ordner ziehen funktioniert zumindest nicht.
Edit: Hab die Datei einfach in "OCAT-test2.exe-2019-04-05T155114" umbenannt, jetzt taucht sie auf^^


Dazu am Rande: Ich hatte gestern mal versucht, weil sich FRAPS und OCAT bei einem Spiel warum auch immer nicht gleichlang benchen lassen konnten, die 30 Frames einfach zu entfernen, indem ich die letzten 30 Zeilen aus der CSV Datei lösche.
Danach konnte CapframeX die Datei aber nicht mehr lesen, also der Eintrag war noch vorhanden aber die Werte blieben bei denen der vorher ausgewählten Datei und bei einem Doppelklick auf den Eintrag hat sich das Programm geschlossen.

Weißt du, warum das so ist?
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: ZeroStrat
Oh Gott, mein Visual Studio macht mich fertig. Kostet so viel wie ein gebrauchter Kleinwagen, aber läuft wie ein Haufen piiiieeep.
Ergänzung ()

So, hier der erste RC. Neu und zu testen ist:
  • Screenshots haben eine bessere Qualität
  • Schrift der Leistungsparameter (Single Record Page + Screenshots ) ist größer
  • 1% und 0.1% Low Average (YT-Parameter) sind nun konsistent
  • Liste wird aktualisiert, wenn die Kommentare geändert werden
  • Tooltip des Screenshotbuttons beschreibt den korrekten Status beim Wechsel
  • Rest fällt mir später ein, erstmal essen ^^
Was nicht geht:
  • Das gesamte Panel "Data/Settings" ist out of order
 

Anhänge

Zuletzt bearbeitet von einem Moderator:
Taxxor schrieb:
Dazu am Rande: Ich hatte gestern mal versucht, weil sich FRAPS und OCAT bei einem Spiel warum auch immer nicht gleichlang benchen lassen konnten, die 30 Frames einfach zu entfernen, indem ich die letzten 30 Zeilen aus der CSV Datei lösche.
Danach konnte CapframeX die Datei aber nicht mehr lesen, also der Eintrag war noch vorhanden aber die Werte blieben bei denen der vorher ausgewählten Datei und bei einem Doppelklick auf den Eintrag hat sich das Programm geschlossen.

Weißt du, warum das so ist?

Hast du zur Laufzeit bereits geladene Dateien geändert? Falls ja, wäre das ein ungewöhnlicher Anwendungsfall.
 
Auch wenn ich das Programm schließe, die Datei verändere und dann das Programm wieder öffne, geht es nicht mehr.
Vielleicht steckt irgendwo in der Datei eine Angabe für die Länger oder Framezahl und wenn das dann nicht mit der Anzahl der Werte passt, funktioniert es nicht.
 
OK, das muss aber gehen. Ich teste das mal.
Ergänzung ()

Taxxor schrieb:
Auch wenn ich das Programm schließe, die Datei verändere und dann das Programm wieder öffne, geht es nicht mehr.
Vielleicht steckt irgendwo in der Datei eine Angabe für die Länger oder Framezahl und wenn das dann nicht mit der Anzahl der Werte passt, funktioniert es nicht.

Mit Notepad++ kann ich die Dateien verändern und problemlos neu laden.
 
Zuletzt bearbeitet von einem Moderator:
ZeroStrat schrieb:
Mit Notepad++ kann ich die Dateien verändern und problemlos neu laden.

Okay muss ich Mal testen, ich hab's einfach mit dem Editor gemacht
 
...geht sogar zur Laufzeit. Einfach Datensatz neu auswählen in der Liste und alles korrekt. Ich versuche es mal mit dem normalen Editor.

Edit: Mit dem normalen Editor geht's, aber mit Excel nicht. Das verändert das Format.
 
Notepad++ funktioniert, direkt im Anschluss noch mal weitere Zeilen mit dem normalen Editor gelöscht und der Eintrag lässt sich nicht mehr öffnen
 
Nein, aber hier mal zu einem der Testpunkte
  • 1% und 0.1% Low Average (YT-Parameter) sind nun konsistent
Fett markiert sind die Werte die über 1% abweichen.
770557


Zur Kontrolle habe ich mir mal AC Odyssey genommen und die Frametimes aus der OCAT und FRAPS Datei verglichen.
FRAPS hat insgesamt einen Frame mehr(6301 zu 6300)
770560


0.1% wären 6,3 also der Schnitt der 7 schlechtesten Frames.
Bei OCAT komme ich auf 18,4306 , bei FRAPS ebenfalls auf 18,4306

Das FRAPS Tool gibt auch 18,43 aus
CapframeX sagte vorher 19,13 und jetzt 17,54


Und auch das habe ich nochmal nachgerechnet: auf 17,54 kommt man, wenn man die 6 schlechtesten nimmt.

Da muss man sich jetzt überlegen, was bei ungeraden Werten besser ist. Immer den nächst besseren Frame mit rein zu nehmen oder immer auf den schlechteren abrunden.
Wie man sieht, macht das halt schon gerne bis zu 6% aus in den 0.1% low Werten, aber immerhin schönt es die Werte nicht, da sie dadurch ja allesamt schlechter ausfallen, als mit Aufrunden.


An der Abweichung der Quantile hat sich nichts geändert, das haben wir ja schon erörtert, warum die sich unterscheiden. Hier finde ich die Methode deines Programms aber auch sowieso besser.
Battlefront II ignoriere ich hier beim P0.1 mal wegen der Aktion mit dem Raustabben.
 
Zuletzt bearbeitet:
Gib mir mal bitte die Datensätze mit den größten Abweichungen.

Das ist übrigens mein Code dazu:
C#:
public double GetPAverageHighSequence(IList<double> sequence, double pQuantile)
{
    var pQuantileValue = sequence.Quantile(pQuantile);
    return sequence.Where(element => element >= pQuantileValue).Average();
}

Wenn pQuantileValue einer nicht-ganzahligen Position (der Wert liegt irgendwo zwischen zwei anderen Werten) entspricht, wird es nicht mit reingerechnet in den Low-Average. Und das dürfte die Regel sein.
 
Gerne, aber eigentlich ist ja alles in Ordnung, so wie es momentan läuft, das FRAPS Tool rundet eben bei nicht ganzzahligen Werten immer auf, auch bei "x,1" Werten, während du immer abrundest, auch bei "x,9" Werten.

Man könnte eventuell überlegen, den nächsten Frame wirklich ab x,5 mit rein zu nehmen, damit es etwas noch etwas genauer wird.
Immerhin beziehst du bei den Quantilen ja auch die Dezimalstelle mit ein.
Ergänzung ()

Bug? Ich habe den Cutting Mode Switch immer dazu benutzt, die Anzahl der Frames zu sehen um sie mit den FRAPS Aufnahmen zu vergleichen.
Aktuell bewirkt der Switch aber außer dem Ausgrauen des "Sliding Window" Kästchens und des "Chart length(sec)" Dropdowns nichts.
 

Anhänge

Zuletzt bearbeitet:
Taxxor schrieb:
Bug? Ich habe den Cutting Mode Switch immer dazu benutzt, die Anzahl der Frames zu sehen um sie mit den FRAPS Aufnahmen zu vergleichen.
Aktuell bewirkt der Switch aber außer dem Ausgrauen des "Sliding Window" Kästchens und des "Chart length(sec)" Dropdowns nichts.

Sorry, hatte ich oben geschrieben. Der Cuttingmode und das "Sliding Window" sind den Umbaumaßnahmen zeitweise zum Opfer gefallen. Ich arbeite an der Reaktivierung.
 
Battlefront 2 habe ich übrigens gerade selbst verglichen, OCAT und FRAPS reagieren wohl anders auf das raus- und reintabben, daher sind die Werte hintenraus etwas unterschiedlich.
770611


Hier ist, was ich daran nicht verstehe:
Das 0.1% Quantil weicht um 18% ab (22,18 zu 18,72)

0.1% bei 10602 Frames sind 10,6. Für das FRAPS Tool also der 11. Frame.
53,433ms= 18,715fps ->passt

Für dein Programm liegt der Wert dann zwischen dem 10. und 11. Frame, also zwischen 53,428ms und 53,024ms.
Damit müsstest du aber auch ziemlich genau dort landen und dürftest nicht besser als 18,87fps(der 11. Frame) sein

Außerdem ist dies der einzige Fall, wo dein Quantil besser ist, als das des FRAPS Tools.
Was ja eigentlich unmöglich ist, wenn das FRAPS Tool immer auf die nächst bessere Frametime aufrundet, muss es eigentlich zwingend etwas besser sein.
Zumindest wenn die Werte annähernd zusammenpassen, was sie in diesem Fall für den 10. und 11. Frame ja tun.

Selbst wenn ich nicht nur Frame 10 und 11 sondern noch je 5 Frames drunter und drüber reinnehme, komme ich nicht in die Nähe von 45ms, die den 22,2fps entsprechen.
 
Zuletzt bearbeitet:
@Taxxor Ich gehe deine Werte (SWBF II) gerade mal durch mit meiner Software im Debug-Modus...
Ergänzung ()

@Taxxor Ich werte das Error Flag aus in dem Datensatz und schmeiße entsprechende Zeilen dann raus. Ich verwende sozusagen einen API-Error-State-Filter.
 

Anhänge

  • Error_Flag_Filter.png
    Error_Flag_Filter.png
    177,4 KB · Aufrufe: 376
Zuletzt bearbeitet von einem Moderator:
  • Gefällt mir
Reaktionen: Taxxor
@ZeroStrat Ah na sieh mal an, auf diese Spalte hab ich gar nicht geachtet, weil ich für den Vergleich direkt alle Spalten außer MsBetweenPresents gelöscht habe.

Dann kommt das auch hin.
Wenn man diese drei Frames rausnimmt, die ja alle schlechter als die 0.1% Schwelle sind, rutschen an Position 10 und 11 die Werte 46,786ms und 45,044ms, mit denen wir dann auf 22,18fps kommen.


Aber was bedeutet denn der Error? Ich denke mal das hat sicher was mit dem raustabben zu tun.
Dass sie nicht dargestellt wurden, kann es ja nicht bedeuten, dann stände da ja einfach eine 1.
Dass sie nicht aufgenommen wurden, auch nicht, sonst hätten sie ja keinen Wert.




Edit:
Und noch mal zu den low Werten: Kann man es denn einfach umsetzen, dass er rundet? Also bei einem 0.1% low Wert von 6300 Frames den Schnitt der schlechtesten 6 Frames und bei einem von 6700 Frames den Schnitt der schlechtesten 7 Frames.

Bei einem Wert von 6,3 direkt 7 Werte zu nehmen, wie es das FRAPS Tool macht, ist nicht so optimal.
Aber bei einem Wert von 6,7 trotzdem nur 6 Werte zu nehmen, verfälscht den Wert ja genau so, nur in die andere Richtung.
 
Zuletzt bearbeitet:
Zurück
Oben