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
Seite 1 von 4  1 23     Letzte » 
EWeiss
(Gast)

n/a Beiträge
 
#1

Hohe CPU Auslastung bei 64Bit Anwendungen

  Alt 27. Aug 2018, 18:01
Ich versuche es noch einmal ohne über den Compiler zu schimpfen.
Die Ausgangssituation ist diese das die gleiche Anwendung gleicher Quelltext unter 32Bit 0% und mit 64Bit 25% Cpu Auslastung produziert.
Bei 32Bit könnt ihr die Geschwindigkeit auf Maximum stellen und es bleibt bei fast 0% Auslastung wenn die Durchsichtigkeit ausgeschaltet ist.

Was ich versucht habe.
Zitat:
Dort habe ich jetzt schon versucht MMTimer (Hochauflösender Timer vom MMSystem inkl. QueryPerformanceFrequency Callback usw.
Ein Sleep(0) oder Sleep(1) bringt auch nichts.
Den Timer auf 25ms zu setzen bremst das gesamte zeichnen aus.
Mein Problem ist zu ergründen warum das so ist.
Die Anwendung zum testen das es so ist kann man sich hier anschauen.

Es tritt nur dann auf wenn diese Funktion aufgerufen wird.

Delphi-Quellcode:
      if (ObjItem.angle <> 0) then
       begin
         GdipSetInterpolationMode(graphics, ObjItem.quality);

         GdipRotateWorldTransform(graphics, ObjItem.angle + 180, MatrixOrderAppend); //<<<< hier
         GdipTranslateWorldTransform(graphics, xD + (wD div 2), yD + (hD div 2), MatrixOrderAppend); //<<<<< und hier

         GdipDrawImageRectRectI(graphics, img, wD div 2, hD div 2, -wD, -hD, xS, yS, wS, hS, 2, imgAttr,
           ImgAbort, nil);
       end else
       begin
         GdipSetInterpolationMode(graphics, ObjItem.quality);
         GdipDrawImageRectRectI(graphics, img, PosX, PosY, wD, hD, xS, yS, wS, hS, 2, imgAttr, ImgAbort, nil);
       end;
Das kann man leicht testen indem man einfach die "eigene Rotation und die 3D tiefe ausschaltet" beide Eigenschaften verwenden im etwas abgeänderte form die gleiche Funktion.

Meine Vermutung ist das dieses Problem von der GDIPlus 64Bit selbst verursacht wird oder aber wie zuvor schon öfters eine der Typen nicht korrekt für 64Bit definiert ist.

Vielleicht hat ja doch noch jemand eine Idee falls es an der Anwendung selbst liegt.
Bei der DLL werde ich es dann wohl selbst finden müssen obwohl ich nicht erkennen kann das es hier ein Type Problem geben könnte. (Etwas fehlt mir auch die Erfahrung )

Hier noch dir Funktionen
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;
Die übergebenen Typen sind alle identisch..
Habe es auch schon mit Pointer versucht bringt keine Verbesserung.

gruss

Geändert von EWeiss (27. Aug 2018 um 18:27 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: Hohe CPU Auslastung bei 64Bit Anwendungen

  Alt 28. Aug 2018, 19:03
Hat sich erledigt.
Jemand hat sich bereit erklärt das Problem zu analysieren. (Wenn es jemand kann dann er )

Bei ihm ist die Auslastung 32Bit vs. 64Bit die gleiche so um 0 > 3 Prozent. (Win10)
Es scheint so das es nicht an Delphi (Compiler) sondern an meiner älteren Hardware liegt.
Das Problem ist bei mir unter 32Bit nie aufgetreten, warum es mit der 64Bit Version nicht geht, nun da bin ich nicht der Spezialist um das zu analysieren.
Es scheint tiefer zu gehen als der Code selbst.

Von daher denke ich das ich es so hinnehmen muss wie es ist.
Programmtechnisch gesehen kann ich auf die angesprochenen Funktionen die in GDIPlus verwendet werden keinen Einfluss nehmen.
GDIPlus64 <> GDIPlus32

PS:
Zumindest kann ich davon ausgehen das es nicht an meiner Programmierung oder den 64Bit Compiler von Delphi liegt.

gruss

Geändert von EWeiss (28. Aug 2018 um 19:28 Uhr)
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Hohe CPU Auslastung bei 64Bit Anwendungen

  Alt 28. Aug 2018, 19:12
Schön das es geklärt ist,
hatte es gerade compilert und wollte da mal reinschauen.
Kann ich es mir sparen...
Fritz Westermann
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#4

AW: Hohe CPU Auslastung bei 64Bit Anwendungen

  Alt 28. Aug 2018, 19:15
Schön das es geklärt ist,
hatte es gerade compilert und wollte da mal reinschauen.
Kann ich es mir sparen...
Da kannst du nicht reinschauen weil das Problem innerhalb der DLL zu finden ist.
Trotzdem Danke.

gruss
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Hohe CPU Auslastung bei 64Bit Anwendungen

  Alt 28. Aug 2018, 19:17
Jetzt ist es wohl klar........
Aber nur zur Info: Auf meinem Rechner pendeln beide Versionen zwischen 0 und 1 %
Fritz Westermann
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: Hohe CPU Auslastung bei 64Bit Anwendungen

  Alt 28. Aug 2018, 19:21
Jetzt ist es wohl klar........
Aber nur zur Info: Auf meinem Rechner pendeln beide Versionen zwischen 0 und 1 %
Hervorragend Danke für die Info
Denke Win10 oder?

Bei mir auf dem Rechner Win7 wie schon gesagt 64Bit 25% andere 0.
Meine CPU Core2 Quad Q9650 3GHZ.

gruss
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Hohe CPU Auslastung bei 64Bit Anwendungen

  Alt 28. Aug 2018, 19:28
Grafikkarte:
NVidia QUADRO P600
Intel Core i7-8700K 3.7 Ghz
64 GB Ram
Windows 10 ja
Fritz Westermann
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#8

AW: Hohe CPU Auslastung bei 64Bit Anwendungen

  Alt 28. Aug 2018, 19:31
Grafikkarte:
NVidia QUADRO P600
Intel Core i7-8700K 3.7 Ghz
64 GB Ram
Windows 10 ja
Ok PowerPC
Meine Graka NVidia GTX 780 TI

Danke nochmals.

gruss
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#9

AW: Hohe CPU Auslastung bei 64Bit Anwendungen

  Alt 28. Aug 2018, 19:42
Sorry eins wollte ich noch nachfragen.
Wenn du das teil mit voller Leistung laufen lässt wie ist die CPU Auslastung dann?
Also alles an inklusive Speed auf Maximum.

Nebenbei bei mir auf Win10 externe Festplatte über USB 2 85% CPU Auslastung.
Bis mein System vollständig gestartet ist benötige ich etwa 10 Min.

gruss

Geändert von EWeiss (28. Aug 2018 um 19:45 Uhr)
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Hohe CPU Auslastung bei 64Bit Anwendungen

  Alt 28. Aug 2018, 19:54
Tja, pendelt bei beiden Version zwischen 3 und 4%
Das hast Du echt gut gemacht.
Wobei mein Rechner ja eher am oberen Rand anzusiedeln ist. Arbeite halt im CAD Bereich und da ist Speed alles.....
Fritz Westermann
  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 19:54 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