OpenWindowedScreen() / OpenScreen() zu langsam

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Re: OpenWindowedScreen() / OpenScreen() zu langsam

Beitrag von Fluid Byte »

Keiner von euch hat Recht, keiner von euch hat Unrecht. Allerdings sollten die Kandidaten die veraltete PB-Versionen nutzen und mir erzählen ich müsste in die Hilfe gucken mal in selbige reinschauen:
Syntax hat geschrieben:Returns the number of milliseconds that have elapsed since a specific time in the past.
Es liest also nicht explizit die Zeit seit Systemstart, sondern die eines "Ereignisses in der Vergangenheit". In meinem Fall der erste Aufruf von ElapsedMilliseconds().
Remarks hat geschrieben:The absolute value returned is of no use since it varies depending on the operating system. Instead, this function should be used to calculate time differences between multiple ElapsedMilliseconds() calls.

This function is relatively accurate: it may have a slight variation, depending on which operating system it is executed on, this is due to the fact that some systems have a lower timer resolution than others.
Zweimal in fett, die Ergebnisse sind unterschiedlich denn sie sind BETRIEBSSYSTEM-ABHÄNGIG.

Fakt ist und bleibt, die Startzeit ist bei mir immer 0 und immer bei 0.6 Sekunden. Ausnahmslos.

Und jetzt genug mit der Offtopic-Scheisse, zurück zum Thema bitte.
Windows 10 Pro, 64-Bit / Outtakes | Derek
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: OpenWindowedScreen() / OpenScreen() zu langsam

Beitrag von ccode_new »

Okay, muß nicht genau 0 sein, besser man geht von einem Wert aus, den man als Differenz nehmen kann.
Sicher ist nur, das es nicht die GetTickTime API ist und das
Ergebnis ist ein Quad und kein Long!

Unter Windows scheint es aber immer 0 zu sein.
...und unter Linux einfach nur ein zufälliger Wert zwischen 0 und 1000 ?!
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: OpenWindowedScreen() / OpenScreen() zu langsam

Beitrag von STARGÅTE »

bei mir sind es 16ms.

Welche Subsystem nutzt du denn?
Mit DirectX11 sind es 27ms und
mit OpenGL sind es zB zwischen 230 und 430ms
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Kurzer
Beiträge: 1617
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Re: OpenWindowedScreen() / OpenScreen() zu langsam

Beitrag von Kurzer »

Bei mir sind es 67 ms unter Win 10 x64 mit einer AMD 5350@2GHz CPU, 4 GB RAM und onboard Grafikkarte
Kann es ein, dass Du einen Virenscanner im Einsatz hast, der u.a. auch die Fenster von Programmen
scannt (also Screenshots macht) um daraus Hinweise auf das Programm zu bekommen? AVAST macht das
meines Wissens nach so (ich weiß nur nicht wie die Funktion heißt, mglw. "Screenscan").

Versuchs mal ohne Virenscanner.
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Re: OpenWindowedScreen() / OpenScreen() zu langsam

Beitrag von Fluid Byte »

DirectX9 (Standard) / DirectX11 / OpenGL

Bild


Als Virenscanner nur "Windows Defender" welchen ich für den Test ausgeschaltet habe, kein Unterschied.

Diese Zeiten sind katastrophal ...
Zuletzt geändert von Fluid Byte am 21.06.2017 11:35, insgesamt 1-mal geändert.
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: OpenWindowedScreen() / OpenScreen() zu langsam

Beitrag von NicTheQuick »

Mal eine Frage aus einer anderen Richtung: Wieso muss es so schnell gehen? Ist es zeitkritisch oder ist dir das nur so nebenbei aufgefallen? Hast du eine vergleichbare Applikation, bei der es wesentlich schneller geht, sodass man mit Sicherheit sagen kann, dass es irgendwie an Purebasic liegt?
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Re: OpenWindowedScreen() / OpenScreen() zu langsam

Beitrag von Fluid Byte »

NicTheQuick hat geschrieben:Mal eine Frage aus einer anderen Richtung: Wieso muss es so schnell gehen? Ist es zeitkritisch oder ist dir das nur so nebenbei aufgefallen?
Ist nicht zeitkritisch das ist aber nicht wirklich von Relevanz denn die Zeiten bleiben brutal schlecht.
NicTheQuick hat geschrieben:Hast du eine vergleichbare Applikation, bei der es wesentlich schneller geht, sodass man mit Sicherheit sagen kann, dass es irgendwie an Purebasic liegt?
Nein, aber jeder der hier gepostet hat bekommt deutlich bessere Zeiten auf älterer Hardware und bestätigt meinen Verdacht.
STARGÅTE hat geschrieben: bei mir sind es 16ms.
Mit DirectX11 sind es 27ms und
mit OpenGL sind es zB zwischen 230 und 430ms
Auch wenn ich lange nicht mehr mit PB gearbeitet habe weiß ich dass es nie so lange gedauert hat nur um einen Screen zu öffnen.
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: OpenWindowedScreen() / OpenScreen() zu langsam

Beitrag von NicTheQuick »

Auf dem kleinen i3 hier auf der Arbeit ohne dedizierte Grafikkarte dauert es ca. 115 ms bei OpenGL und 9 ms mit DirectX.

Kann es vielleicht damit zu tun haben, dass die Treiber deiner Grafikkarte einfach länger brauchen bis sie geladen sind? Da steckt ja etwas mehr dahinter als wenn man die in der CPU integrierte Grafik nutzt.
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: OpenWindowedScreen() / OpenScreen() zu langsam

Beitrag von ccode_new »

Bei mir sind es bei deinem Beispiel 14 ms im Mittelwert aus 10 Messungen.

Mich würde interessieren welche Werte du nur beim öffnen des Fensters (nicht Screen) bekommst.

Also:

Code: Alles auswählen

InitSprite()

z1 = ElapsedMilliseconds()
ok = OpenWindow(0,0,0,1280,720,"",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)
z2 = ElapsedMilliseconds()

ok2 = OpenWindowedScreen(WindowID(0),0,0,WindowWidth(0),WindowHeight(0))
MessageRequester("Time passed", Str(z2 - z1) + " ms")
Debug ok
Vielleicht liegt es ja wirklich an den Treibern.
Wird hier für eine höhere Leistung mehr vorgeladen ?

Mich würden echte Performance-Tests interessieren.

....
Unter Windows (mit DX) sind es im Durchschnitt 60 ms.

Ich habe jetzt aber mal das PureBasic-Programm und gleichzeitig die NVidia-Systemsteuerung geöffnet.
Das Ergebnis: Das PB-Fenster ist eingefroren und die MsgBox hat mir 26043 ms angezeigt.

Ich möchte damit sagen: Vielleicht läuft bei dir irgend ein Hintergrundprozess der die Geschwindigkeit ausbremst.

Ach so noch etwas:

Also:
Unter Linux (OpenGL): ca. 14 ms
Unter Windows (DX): ca. 60 ms
Unter Windows (Subsystem: opengl): ca. 1500 ms (höchster Wert 3867 ms)

Also OpenGL versagt (mit dieser Performance) unter Windows bei mir vollkommen.

System:
CPU: Intel(R) Core(TM) i5-3230M CPU @2.60GHz
RAM: 8,00 GB (7,71 verwendbar)
OS: 64-Bit Windows 10 Pro
OS: Linux Ubuntu Mate 16.04 LTS
GPU(s): Intel(R) HD Graphics 4000 / NVIDIA GeForce 710M
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: OpenWindowedScreen() / OpenScreen() zu langsam

Beitrag von STARGÅTE »

Hast du schon mal geguckt ob vllt NVIDIA oder ´dieses Geforce-Experience in der PureBasic Applikation "rumfuscht"?

Hast du diese lange Ladezeit auch wenn du einen FullScreen öffnest?

PS: Das OpenGL Subsystem hat bei mir schon "immer" längere Ladezeiten verursacht.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Antworten