AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Hohe CPU Auslastung bei 64Bit Anwendungen

Hohe CPU Auslastung bei 64Bit Anwendungen

Ein Thema von EWeiss · begonnen am 27. Aug 2018 · letzter Beitrag vom 30. Aug 2018
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

AW: Hohe CPU Auslastung bei 64Bit Anwendungen

  Alt 28. Aug 2018, 21:36
Es gibt auch andere Profiler, nicht nur AQTime.

Und von XE bis XE7 war eine kostenlose Edition des AQTime im Delphi enthalten, welche keine Daten haben wollte.
Danke für die Infos aber ich kann an der Funktion Inside GDIPlus eh nichts ändern und Zacherl sagte ja schon mehr als 64 Frames sind nicht drin.
Es liegt definitiv nicht am "Timer, Compiler, Delphi, Code" sondern an meiner Hardware.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.588 Beiträge
 
Delphi 12 Athens
 
#2

AW: Hohe CPU Auslastung bei 64Bit Anwendungen

  Alt 28. Aug 2018, 22:08
Ein Profiler kann dir zeigen wo im Programm die meiste Zeit für alle Berechnungen anfallen, also wer an den 100% CPU-Last die meiste Schuld hat.

Das geht bei AQTime auf ganze Prozeduren, bis hin zu einzelnen Delphi-Befehlen und vielleicht sogar auf Assembler-Ebene. (je tiefer die Ebene, um so größer die Beeinflussung der Messung > kannst selber ausprobieren, wenn du manuell eine Zeitmessung einbaust und z.B. in einem for i := 0 to 10000000 do Inc(x); die Dauer der einzelnen INC misst und zusammenrechnest und das dann mit "nur" einer einzelnen Messung um die ganze Schleife vergleichst)


Natürlich erzeugen Compiler für verschiedene Systeme unterschiedlichen Code. (egal ob Win32, Win64, iOS, MacOX, Linux usw.)
Da gibt es sogar nochmal einen Unterschied, ob du ein 32 Bit-Programm in einer 32-Bit-CPU laufen lässt oder in einer 64-Bit-CPU/64-Bit-Windows,
bzw. 32-Bit-Anwendung in einem 32-Bit-Windows auf einer 64-Bit-CPU
und das dann noch gegen den 64-Bit-Code in der 64-Bit-CPU/Windows.

Es gibt auch im Pascal/RTL/VCL/... nochmal unterschiedliche Versionen je Plattform vom mehreren Funktionen, vor allem bei Codes wo direkt mit Assembler gearbeitet wird.


Daran kannst du nichts ändern (unabhängig davon, dass andere/neuere Win32-Compiler anderen Code und bessere Optimierungen bieten und dass man für einzelne Delphi-Funktionen eigene/fremde Versionen nutzen kann)
aber du kannst schauen wo die Zeit/CPULast anfällt und da dann eventuell deinen Quellcode anpassen.


Bedenke dass Win64 so ähnlich wie iOS, Linux und Co. angesehen werden muß
und nicht jeder Code einfach so überall gleich verwendet werden kann.

Bei einfachen Funktionen geht das schon,
sobald System-APIs ins Spiel kommen, kann es die düben nicht/anders geben,
und insgesamt muß man eben für unterschiedliche Systeme auch eigenen/angepassten Code erstellen.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (28. Aug 2018 um 22:25 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: Hohe CPU Auslastung bei 64Bit Anwendungen

  Alt 28. Aug 2018, 22:12
Zitat:
also wer an den 100% CPU-Last die meiste Schuld hat.
Das verstehe ich.
Aber noch einmal das weis ich auch ohne Profiler.

Es sind diese beiden Funktionen und da habe ich keinen Einfluss drauf unabhängig davon wie viele Frames ich Rendern kann\könnte.
Wenn meine Hardware mit diesen Funktionen Probleme hat kann ich nichts dran ändern.
Da es unter 32BIT läuft kann es nur daran liegen das sich die GDIPlus64 mit meiner Hardware nicht verträgt.

Delphi-Quellcode:
GdipTranslateWorldTransform: function(Graphics: LONG_PTR; dx: Single; dy: Single; order: GpMatrixOrder): GPSTATUS; stdcall;
GdipRotateWorldTransform: function(Graphics: LONG_PTR; angle: Single; order: GpMatrixOrder): GPSTATUS; stdcall;
Zitat:
und da dann eventuell deinen Quellcode anpassen.
Da ist nichts anzupassen was soll ich an den Funktionen ändern?

gruss

Geändert von EWeiss (28. Aug 2018 um 22:17 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.588 Beiträge
 
Delphi 12 Athens
 
#4

AW: Hohe CPU Auslastung bei 64Bit Anwendungen

  Alt 28. Aug 2018, 22:38
Hmmm, OK, da kann natürlich erstmal der Code der GDI+ DLLs sich unterscheiden (die für 64 Bit könnten einfach nur grottenschlecht sein)
dann natürlich noch dein Grafiktreiber usw.

Aber es kann auch sein, dass du im GDI+ irgendwo ein paar Einstellungen anders machen mußt, damit es schneller/sparsamer läuft.
Oder dass du unter 64 Bit mit einer anderen API oder anderen/neueren Funktionen jener API bessere Ergebnisse erzielst.

Für so manche Funktionen haben oftmals auch andere Entwickler "bessere" Funktionen gebaut, als die im Betriebssystem vorhandenen.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: Hohe CPU Auslastung bei 64Bit Anwendungen

  Alt 28. Aug 2018, 23:00
Aber es kann auch sein, dass du im GDI+ irgendwo ein paar Einstellungen anders machen mußt, damit es schneller/sparsamer läuft.
GDI+ ist der Hauptsächliche Part meines Frameworks und meine Funktionen bzw.. wie ich sie anspreche sind optimiert bis zum geht nicht mehr.
Zitat:
Für so manche Funktionen haben oftmals auch andere Entwickler "bessere" Funktionen gebaut, als die im Betriebssystem vorhandenen.
Würde gegen mein Framework sprechen. .Ich mixe keine GDI Zeichnungs Funktionen in Kombination mit GDI+ wenn es nicht nötig ist.
Zitat:
die für 64 Bit könnten einfach nur grottenschlecht sein
Möglich habe ich aber keinen Einfluss drauf.

Zitat:
dann natürlich noch dein Grafiktreiber usw.
Wäre eine Möglichkeit das noch zu checken.
Aber ich verwende beabsichtigt einen alten Treiber( 352.86 ) weil die Nachfolgenden von NVIDIA wirklich Grotten schlecht sind.
Das ist der einzige der bei mir bisher noch keinen Absturz oder gar Blue-Screen verursacht hat.

gruss

Geändert von EWeiss (29. Aug 2018 um 05:53 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: Hohe CPU Auslastung bei 64Bit Anwendungen

  Alt 29. Aug 2018, 06:36
Nebenbei eine Sinnvolle Verwendung wäre zum Beispiel so etwas.

Diamanten mit Thumbnails der eigenen Anwendung ersetzen Array anpassen sowie eine neue Brennweite(FocalLength) festlegen das war es dann schon.
Beim Klick auf eines der Thumbnails den jeweiligen Skin auswählen.
Hier als Beispiel mein Mediaplayer.

gruss

Geändert von EWeiss (11. Jul 2019 um 15:53 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Hohe CPU Auslastung bei 64Bit Anwendungen

  Alt 29. Aug 2018, 06:39
Aber ich verwende beabsichtigt einen alten Treiber( 352.86 ) weil die Nachfolgenden von NVIDIA wirklich Grotten schlecht sind.
Das ist der einzige der bei mir bisher noch keinen Absturz oder gar Blue-Screen verursacht hat.

gruss
Also in Bezug zu Windows 10, nimm Bitte einen der 39Xer Reihe, das gibt Dir einen guten Geschwindigkeitsboost, der ist auch mit 780 GTX Kompatibel. Auf mein Läppi ist ne alte dedicated 5XX MX samt Win10 mit aktuellen Treibern am laufen.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#8

AW: Hohe CPU Auslastung bei 64Bit Anwendungen

  Alt 29. Aug 2018, 06:42
Aber ich verwende beabsichtigt einen alten Treiber( 352.86 ) weil die Nachfolgenden von NVIDIA wirklich Grotten schlecht sind.
Das ist der einzige der bei mir bisher noch keinen Absturz oder gar Blue-Screen verursacht hat.

gruss
Also in Bezug zu Windows 10, nimm Bitte einen der 39Xer Reihe, das gibt Dir einen guten Geschwindigkeitsboost, der ist auch mit 780 GTX Kompatibel. Auf mein Läppi ist ne alte dedicated 5XX MX samt Win10 mit aktuellen Treibern am laufen.
Da verwende ich den neuesten bringt aber nichts denn wenn du vielleicht gelesen hast verwendet ich ein System das über einen USB Adapter 2, externe Platte läuft.
Das benötigt bis zum Start, vollständiger Desktop geladen zirka 10 Min..
Da ist nix mit Boost selbst wenn ich es wollte. 85% Auslastung sagt wohl alles.

Windows 10 ist nur ein Developer Test System.. Als Standard System werde ich es nie verwenden.
Von daher egal!

gruss

Geändert von EWeiss (29. Aug 2018 um 06:47 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.588 Beiträge
 
Delphi 12 Athens
 
#9

AW: Hohe CPU Auslastung bei 64Bit Anwendungen

  Alt 30. Aug 2018, 01:03
wie ich sie anspreche sind optimiert bis zum geht nicht mehr.
Für Win32, also in jenem System wo sie optimiert wurden.


Tja, und nun nochmal das Gleiche für 64 Bit.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Antwort Antwort

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 10:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz