Auswertung und Darstellung

Baal Netbeck

Fleet Admiral
Registriert
Apr. 2008
Beiträge
12.302
Dies ist ein ausgelagertes Thema aus diesem Hauptthread:
https://www.computerbase.de/forum/t...kussion-zu-spieletests.1728575/#post-20678303

Sind alle Spiele, Testszenen, Einstellungen usw. ausgesucht und die Benchmarks gemacht, geht es an die Auswertung und Darstellung der Ergebnisse.

Edit:
Inzwischen ist mein Programm deutlich erweitert als hier gezeigt.
Es arbeitet vielfach schneller, kann fünf Messungen einlesen und mir Durchschnitte für die drei besten und schlechtesten Werte ermitteln.
Ebenfalls habe ich Mittelwerte für die schlechtesten 5%, 1% und 0,1% der Frametimes als "X% low" Werte eingefügt.



Wer sich den Text sparen möchte, kann es sich auch in zwei Videos angucken:
https://www.youtube.com/watch?v=Dm_-T2H83m0&t=332s
https://www.youtube.com/watch?v=g-bJhhzbaYE&t=49s

Teil 1: Was Fraps uns ausgibt

Fraps spuckt bis zu drei .csv Dateien aus. Diese lassen sich mit dem Editor öffnen und dem Namen vorangestellt sind der Name des getesteten Prozesses, gefolgt von Datum und Uhrzeit der Messung, dann heißen sie entweder fps, minmaxavg oder frametimes.
Die fps Datei enthält eine Liste der FPS gemittelt über je Sekunde. bei einer Messung von 60s erscheinen hier also 60 Werte.
Fraps FPS datei.PNG

die minmaxavg Datei enhält die Anzahl der aufgenommenen Frames, die Dauer der Messung, den kleinsten und größten Wert aus der fps Datei und die mittleren FPS über die ganze Messung.
Fraps minmaxavg datei.PNG

Die interessante Datei ist die frametimes Datei. Sie enthält zwei Spalten, eine mit der Framenummer und eine mit dem Zeitpunkt der Frames relativ zum ersten Frame in ms auf drei Nachkommastellen genau.
Fraps frametimes datei.PNG

Teil 2: Die Frametimemessungen verarbeiten
So lässt sich mit dem Inhalt wenig anfangen. Wir müssten die Daten in ein Programm importieren, die Differenzen zwischen den Zeitpunkten bilden und dann die Daten plotten oder statistisch auswerten.
Die Ergebnisse von mehreren Messungen mitteln und so weiter.
Das ist von Hand ziemlich aufwendig und geht auch nicht "mal eben schnell" um sich einen Überblick zu den Daten zu machen. Eventuell gibt es da Möglichkeiten, die ich nicht kenne....ich habe das einzige getan, das ich so gerade eben geschafft habe und habe eine C++ Konsolenanwendung geschrieben. Zu mehr reichen meine Fähigkeiten nicht aus;).

Die kleine Anwendung kann man mit einer oder drei(inzwischen auch 5) Frametimedateien füttern und sie berechnet dann meine effektiven Frametimes, eine ganze Reihe Statistikdaten, und gibt zwei Dateien aus. In der ersten sind die Daten für eine graphische Darstellung vorbereitet. Es gibt 4 Spalten je Messung. Zu erst die Zeit in Sekunden, dann die Frametimes in ms, die lokalen FT und dann die effektiven Frametimes.
ausgabe und ausgangsdaten.PNG

Die zweite Datei zeigt die statistische Auswertung.
statistikbeispiel.PNG
Was zeigt mir die statistikdatei?
Einerseits für die drei Dateien einzeln und im oberen Abschnitt die Mittelwerte. Zu beachten ist, dass die angegebenen Fehler bei den Einzelmessungen der Empirischen Standardabweichung(2.Definition) über die ganze Messung entsprechen. Ein großer Fehler entspricht einer großen Schwankung über die Messung hinweg. Entweder weil die Werte lokal stark schwanken oder weil ganze Teile der Szene deutlich besser und andere deutlich schlechter laufen....in der Regel eine Mischung aus beidem. Die Percentile Werte und Grenzwertverletzungen sind Einzelereignisse und ich konnte bei ihnen daher keinen Fehler abschätzen.
Die Fehler bei den gemittelten Werten im oberen Teil, wurden über die empirische Standardabweichung(1.Definition) berechnet. Sie berücksichtigen also nur diese drei Werte und geben ein Maß für die Reproduzierbarkeit der Messung. Die prozentualen Abweichungen werden aus den gemittelten Werten bestimmt und haben daher keinen Fehler angegeben.
Teil 3: Die Frametimeverläufe plotten
Zur Darstellung bitte das zweite Video angucken(wenn nicht schon geschehen)....als Text werde ich das irgendwann erweitern.



Was haltet ihr davon? Irgendwelche Verbesserungsvorschläge?
 
Zuletzt bearbeitet:
Als Vorschlag für Deine Plots: Leider kann man hier im Forum keine pdf-Grafiken einbinden (siehe Anhang), aber Du könntest die Grafiken die Du machst automatisiert mit LaTeX (als pdf) plotten lassen. Für die unterschiedlichen Typen von Grafiken die Du machst müsstest Du eben jeweils eine Vorlage erstellen (oder Dir dabei helfen lassen ;)). Eventuell lassen sich die Plots danach automatisiert in ein im Forum betrachtbares Format umwandeln.

Zum Programm: C++ eignet sich für die Zwecke hier denke ich gut. Alternativen wären awk und python, die bieten in diesem Fall aber denke ich kaum Vorteile, da es schon Strings als Datentyp gibt, der nicht schon bei der Erstellung seine Größe kriegen muss. awk würde auch irgendeine Form von Unix-Shell brauchen, entweder in Form des in Win 10 eingebauten Linux oder cygwin. Ist eventuell unangenehm.
 

Anhänge

Das Plotten ist eigentlich kein Problem.
Dieser Beitrag ist schon Recht veraltet....ich werte die frametimes Dateien in einem C++ Programm aus, das mir alle Statistik, die ich haben möchte ausspuckt und auch aufbereitete Verläufe, die ich direkt als ASCII in Origin pro importieren kann.

Aber danke für die Tipps....ich bin leider nicht wirklich mit programmieren ausgebildet und ich kann nur C++ Basis Krams. Daher ist mein Programm auch absurd riesig....egal solange es macht was es soll;)
 
Dass das C++-Programm alles auswertet habe ich mir schon so gedacht ;) Darf ich fragen, was Du beruflich machst? Origin (Pro) kenne ich eigentlich nur als Physiker-Werkzeug? Ohne Dir zu Nahe treten zu wollen finde ich persönlich diese Origin Plots nicht wirklich schön (was Dich nicht davon abbringen soll, Origin zu benutzen. Jeder wie er will! Hier geht es nur um Feedback). Die Achsen- und Legendenbeschriftung ist immer deutlich schwächer (und hässlicher sobald irgendwelche Formeln oder aufwendigere Sub- und Superskripte auftauchen sollen) als das mit LaTeX ginge und die Möglichkeit, mit dem C++-Programm im Prinzip auch schon kompilierbaren LaTeX-Code für Plots zu bekommen fände ich persönlich ziemlich reizvoll. Wenn ich weiter getestet hätte, dann hätte ich ziemlich sicher irgendeine automatisierte Auswertung inklusive Plots geschrieben.

Falls es Dich interessiert wäre hier mal ein (grober) Beispielplot, den ich mit pgfplots (LaTeX Paket) erstellt habe. Grob ist hier vor allem die Achsbeschriftung, das würde ich genauer machen wenn es um etwas ginge. Falls es Dich interessiert, Du aber keine Lust hast Dich einzuarbeiten, helfe ich auch gerne. LaTeX ist mein persönliches Hobby im Studium.
 

Anhänge

Ich bin hoffentlich bald ein fertiger Physiker.
LaTeX nutze ich auch für PDFs und Formeln. Aber für Plots bin ich bei Origin zu Hause;).
Ich produziere ja nicht plots am laufenden Band sondern stelle diese eher individuell zusammen.
Zugegeben...für einige Plots nehme ich einfach eins meiner Templates, ändere den Titel und fertig;).

Aber gerade was die Frametimegraphen angeht, darf es etwas aufwendiger sein...da suche ich mir dann eine Stelle raus, die ich per inset größer darstelle:
Anhang anzeigen 675732
Sowas kann ich mir nicht automatisiert vorstellen. Da wähle ich dann ja spezielle Bereiche, die mir entweder typisch oder interessant erscheinen.
Hier möchte ich einerseits den kompletten Frametimeverlauf zeigen, um in Verbindung mit dem Video der Testszene die Ergebnisse besser einordnen zu können.
Dann möchte ich natürlich auch die feinen Unterschiede in den Frametimeverläufen zeigen, weshalb ich nochmal heranzoome.
Mit der Darstellung bin ich eigentlich ganz glücklich, aber mehr als zwei bis drei Testkandidaten kann man nicht gleichzeitig zeigen.

Als zweiten Diagramm Typ habe ich die Darstellung der Statistikwerte als pseudo-Verlauf:
Anhang anzeigen 675733
Wenn man sich daran gewöhnt hat, was aufgetragen ist, bin ich mit der Darstellung auch ganz zufrieden.
Man kann mehr Testkandidaten zeigen, man zeigt nicht Einzelmessungen sondern Mittelwerte mit Fehlerbalken.

Als drittes die Darstellung des IF, wobei ich da selbst nicht zufrieden bin:

Anhang anzeigen 675745 Anhang anzeigen 674239
Das ist sicherlich schwer nachzuvollziehen, und schwer zu interpretieren.
Auch stören mich die schwer erklärbaren Ergebnisse und die eigentlich unbrauchbare Genauigkeit...aber das ist ja kein Problem der Plots.

Dann die Darstellung der Ram Skalierung über der Ram Frequenz in einem Spiel:
Anhang anzeigen 674234
Das ist ganz schön wie ich finde...allerdings ist es so furchbar viel Arbeit für all die Ramfrequenzen Messreihen aufzunehmen. Daher habe ich für viele der Spiele nur 2133 und 3200 bzw 1333 und 1866 gemessen.

Und dann natürlich die Darstellung für mehrere Spiele:

Anhang anzeigen 680467
Diese waren viel Arbeit, weil ich die verschiedenen Spiele kombinieren musste.
Auf verschieden Bezugspunkte verrechnen und dann auch noch eine Fehlerfortpflanzung mitschleifen musste.....
Für die grobe Idee zu dieser Darstellung habe ich mich von Gamers Nexus inspirieren lassen.
Ich denke das ist ganz in ordnung...bei mir sind die Zahlen halt am linken Rand aufgeführt, um nicht(oder selten) mit den Fehlerbalken zu kollidieren.


Ich würde gerne bei Origin bleiben, allerdings bin ich für Änderungsvorschläge der Plots oder Präsentation der Ergebnisse dankbar!

Ich habe das alles alleine zusammengestellt und einfach mal gemacht was mir in den Sinn kam.

Wenn du Ideen hast, was ich da verbessern kann, würde ich diese gerne hören.
Die Detailbetrachtung der Spiele ist halt nicht sonderlich Mainstream;).
 
Aber gerade dann (für Deine "physikalischen Dokumente") wären doch Plots mit pgfplots sinnvoll, die werden zusammen mit dem Dokument beim Kompilieren erstellt, es gibt gnuplot als backend zum fitten, die Größe ist frei im Dokument anpassbar zwischen den Kompiliervorgängen (bei anderen Vorstellungen zur Größe muss man nicht das dritte Programm nochmal anschmeißen), LaTeX setzt die Beschriftungen und die Schrift im Dokument ist einheitlich. Aber gut, jeder wie er will.

Bei Deinem ersten Beispiel liegt einfach nur ein gewöhnlicher Frametimegraph zugrunde, dieser "Spion" auf einen ausgewählten Bereich wäre in pgfplots ein zusätzlicher Befehl, könnte also in ein automatisch erzeugtes Diagramm noch eingefügt werden, siehe Beispiel 352 (Code) aus dieser Sammlung von fertigen pgfplots mit zugehörigem Code (diese Spione können noch genauer angepasst werden).

Die anderen Diagramme sind prinzipiell auch in pgfplots möglich, Fehlerbalken (soweit ich weiß in x und y Richtung) werden unterstützt.

Inhaltlich: Für Dein zweites Beispiel: Hier wäre ein Balkendiagramm von der Aussage her sinnvoller (weil es keine Aussage über Werte zwischen den xticks gibt), oder eben soetwas wie eine Treppenfunktion; aber ich weiß, mit Balken ist das natürlich schon schwierig und aufwendig.

Sonstige Vorschläge hab ich nicht wirklich, ich hatte gedacht das macht Dir das Leben vielleicht einfacher ;)
 
Das die Verbindungslinien bei Typ 2 problematisch sind, war mir auch bewusst...deshalb hatte ich "pseudo-Verlauf" geschrieben;).
Erst wollte ich die Linien weglassen, aber dann war die optische Zuordnung der Punkte viel schwerer, sobald Datenpunkte fast auf gleicher Höhe liegen.

Säulen nutzen da ein paar Youtuber und CB nutzt ja Balken. Hat mir beides weniger gut gefallen. Ist okay wenn man nur zwei oder drei Statistik werte pro Testkandidat hat, ich wollte aber einen breiteren Bereich zeigen.

Ich denke ich sollte zumindest auf durchgezogene Linien verzichten und auf gestrichelte wechseln. In der Hoffnung, dass niemand denkt die wurden Messdaten dazwischen suggerieren.


Das in PDFs dann die Schrift einheitlich wäre klingt gut. Wenn ich Zeit finde, gucke ich mir das Mal an. Fürs erste wird es einfacher sein, wenn ich bei bekanntem bleibe.

Ich musste auch erstmal neue Daten messen.
Im Moment überlege ich aber Windows neu zu installieren und wieder ein frisches system zu haben.
 
Zurück
Oben