AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte the Power of (Tests verschiedener Render Funktionen)

the Power of (Tests verschiedener Render Funktionen)

Ein Thema von EWeiss · begonnen am 2. Jul 2018 · letzter Beitrag vom 3. Jul 2018
Antwort Antwort
Seite 2 von 2     12
EWeiss
Speed vergleich sowie Qualität unterschiedlicher Render Funktionen TransBlt, AlphaBlend sowie Kombination von Vordergrund und Hintergrund.
Source include.

Anhang gelöscht. (Test erfolgreich)

gruss

Geändert von EWeiss (28. Aug 2018 um 00:55 Uhr)
 
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#11
  Alt 2. Jul 2018, 10:38
Ja.. Aber schaue auf die Leistung der CPU
So groß ist der Unterschied nun auch nicht.
Miniaturansicht angehängter Grafiken
rendercpu.jpg  
  Mit Zitat antworten Zitat
EWeiss
 
#12
  Alt 2. Jul 2018, 10:41
Ja.. Aber schaue auf die Leistung der CPU
So groß ist der Unterschied nun auch nicht.
Hmm.. dann habt ihr Power CPU's bei mir macht es satte 12% aus. (Vielleicht der Unterschied zwischen Win7 und Win10)
Danke für die Info.

Zitat:
Naja gut, das heißt aber nicht, dass man nicht mehr berechnen kann.
In der Praxis macht es natürlich keinen Sinn mehr zu rendern, als der Bildschirm darstellen kann,
aber für einen Performance Test sollte man Rendern lassen bis die CPU/GPU qualmt und schauen was man rausholen kann (egal wie viel der Bildschirm kann).
Nun ich habe es mit GetTickCount und MMSystem versucht bekomme nicht mehr Frames angezeigt als der Monitor hergibt.
66 FPS ist das Maximum bei mir.

Der Timer selbst ist auf 5ms ausgelegt denke nicht das bei 0 mehr FPS angezeigt werden.

gruss

Geändert von EWeiss ( 2. Jul 2018 um 10:51 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#13
  Alt 2. Jul 2018, 11:13
Zitat:
Nun ich habe es mit GetTickCount und MMSystem versucht bekomme nicht mehr Frames angezeigt als der Monitor hergibt.
66 FPS ist das Maximum bei mir.
Mit fsync oder so.

Wenn das mit der Ausgabe gekoppelt ist, wird es ausgebremst, da mehr eh nicht nöötig ist.

Und Timer ... kommt drauf an welche.
Denn einige Timer haben eine Minimal-Auflösung. (z.B. TTimer und GetTickCount haben einen internen Takt von etwa 16ms)
  Mit Zitat antworten Zitat
EWeiss
 
#14
  Alt 2. Jul 2018, 11:24
Zitat:
Denn einige Timer haben eine Minimal-Auflösung. (z.B. TTimer und GetTickCount haben einen internen Takt von etwa 16ms)
Ja deshalb komme ich auch nicht über 60 FPS weil ich einen "normalen" Timer (TTimer) verwende..
Selbst mit der Berechnung der FPS über timeGetTime (MMSystem) komme ich nicht drüber weil mit meinem Timer wie du schon sagst bei 16ms schluss ist.
Werde dann wohl direkt mit TimeSetEvent also einen Timer auf Threadbasis arbeiten müssen wenn ich höhere Frames anzeigen will.

Werde das mit meinem erweiterten sample abändern.

gruss

Geändert von EWeiss ( 2. Jul 2018 um 15:27 Uhr)
  Mit Zitat antworten Zitat
EWeiss
 
#15
  Alt 2. Jul 2018, 19:41
Hat leider etwas länger gedauert.
Ich musste erst eine neue Funktion für meine Library schreiben die es mir ermöglich direkt im Speicher die Bitmap Objekte zu resizen ohne Umweg über speichern und Konsorte.

Neuer Upload im ersten Beitrag.
Es werden 200 Animierte Sprites zur gleichen zeit gerendert.

Wenn man die Qualität testen will muss in den jeweiligen Funktionen der Radio Button das IsWindowVisible kommentiert werden
damit man zugriff auf die einzelnen Funktionen bekommt.

gruss

Geändert von EWeiss ( 3. Jul 2018 um 05:09 Uhr)
  Mit Zitat antworten Zitat
EWeiss
 
#16
  Alt 3. Jul 2018, 05:21
Ich verwende jetzt den MMTimer..
Wenn ich jetzt den Timer auf 1ms stelle dann habe ich folgende Resultate.

TransBlt = 410 FPS aber 25% CPU
AlphaBlend = 358 FPS auch 25% CPU
Composited = 86 FPS 25% CPU

Nur! Was für einen sinn macht das die Anwendung mit vollem Speed laufen zu lassen wenn dadurch die CPU anschließend mit 25% ausgelastet wird?
Gut ich sehe die Frames die real gerendert werden wenn man mal davon absieht das beim 60HZ Monitor eh nur max 66 FPS dargestellt werden können.

Ist schon fragwürdig das ganze.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

 
Delphi 11 Alexandria
 
#17
  Alt 3. Jul 2018, 07:14
Nur! Was für einen sinn macht das die Anwendung mit vollem Speed laufen zu lassen wenn dadurch die CPU anschließend mit 25% ausgelastet wird?
Sinn und Zweck bei Performance Tests ist nunmal die Quantität. Von daher hast Du alles Richtig gemacht, mit einem VSync Knopf sollte sich das Ergebnis dann grob auf die Hz des Monitors einstellen. Falls noch nicht vorhanden bitte reinbasteln. So hat man eine Cpu- & Gpu- schonende und total unlocked Variante für deine Api zum testen.
  Mit Zitat antworten Zitat
EWeiss
 
#18
  Alt 3. Jul 2018, 07:24
Nur! Was für einen sinn macht das die Anwendung mit vollem Speed laufen zu lassen wenn dadurch die CPU anschließend mit 25% ausgelastet wird?
Sinn und Zweck bei Performance Tests ist nunmal die Quantität. Von daher hast Du alles Richtig gemacht, mit einem VSync Knopf sollte sich das Ergebnis dann grob auf die Hz des Monitors einstellen. Falls noch nicht vorhanden bitte reinbasteln.
Dir ist aber schon klar das GDI\GDI+ keinen Zugriff auf das VSync Signal hat oder?
Da ist nix mit reinbasteln in welcher Form auch immer.

OpenGL\DirectX kein Problem.. aber das verwende ich nun mal nicht

Man kann die Frames noch etwas genauer analysieren\setzen über DWM_TIMING_INFO das war's aber auch schon.
Zitat:
So hat man eine Cpu- & Gpu- schonende und total unlocked Variante für deine Api zum testen.
Ich weis nicht wo du deine Infos herholst.
Auch hier GDI\GDI+ werden niemals über die GPU Rendern das ist etwas für OpenGL\DirectX.

gruss

Geändert von EWeiss ( 4. Jul 2018 um 07:15 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

 
Delphi 11 Alexandria
 
#19
  Alt 3. Jul 2018, 07:38
Ich dachte das Du das vorher mit dem Timer so abgeglichen hattest das bei um die 60 FPS ein lock stattfindet und nun ists unlocked auf 1ms ?
Hab mal eine Frage was bei Dir passiert wenn Du folgendes machst: Programm starten, auf [Animate] klicken, auf [Start] klicken. Staunen.
Das erinnert mich an den Duracell-Hasen, nur das der Pinguin hier auf Speed ist ^_^
  Mit Zitat antworten Zitat
EWeiss
 
#20
  Alt 3. Jul 2018, 07:45
Zitat:
Hab mal eine Frage was bei Dir passiert wenn Du folgendes machst: Programm starten, auf [Animate] klicken, auf [Start] klicken. Staunen.
Gar nichts passiert da weil das Timing bzw. der Interval mittlerweile angepasst wurde.

Zitat:
Ich dachte das Du das vorher mit dem Timer so abgeglichen hattest das bei um die 60 FPS ein lock stattfindet und nun ists unlocked auf 1ms ?
Da steht hier nirgends was von.

Was soll das bringen ich will die vollen möglichen Frames anzeigen und nicht irgendetwas blocken.
Und wie gesagt vergiss es mit VSync und anderer diverser Hilfsmittel ist alles zu ungenau und in dem fall bringt es nichts.

EDIT:
Der unterschied wie @himitsu schon sagte ist das der Taktgeber beim TTimer\SetTimer nun mal auf 16ms festgelegt ist mehr bekommst du nicht auch dann nicht
wenn du diesen auf 0 setzt das hat aber nichts mit eigenständigen blocken oder (lock) zu tun.. es ist vorgegeben.
Der MMTimer unterliegt dieser Beschränkung nicht deshalb kann man hier die Maximale FPS herauskitzeln wenn man den Timer auf 1 setzt.
Aber wie schon gesagt das hat nix mit setzen einer Sperrung\Beschränkung zu tun.

Mit setzen des VSync Signal lege ich nur fest das die FPS anzeige so ausgegeben wird wie der Monitor diese wiedergeben kann.
Das geht aber mit GDI und GDI+ nicht das sagte ich aber schon.

Zitat:
Das erinnert mich an den Duracell-Hasen, nur das der Pinguin hier auf Speed ist ^_^
Nun ein einzelnes Animiertes Sprite mit dieser Auflösung hat dann aber auch eine FPS jenseits der grenze von 800.

gruss

Geändert von EWeiss ( 4. Jul 2018 um 07:31 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz