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 4 von 4   « Erste     234
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.626 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#31

AW: Hohe CPU Auslastung bei 64Bit Anwendungen

  Alt 30. Aug 2018, 12:35
Zumindest davon ausgehend, dass wirklich die zwei GDIP Aufrufe für die hohe Auslastung sorgen (was ich bei mir nicht 100%ig verifizieren konnte, da das Problem bei mir nicht auftritt), kann es nur noch ein implementationstechnisches Problem der GDI+ Schnittstelle sein. Hier springt der Code ja in die entsprechende Dll, auf die man nun wirklich keinen Einfluss mehr hat.

Meine Vermutung war, dass für die 64-Bit Version eventuell neuere CPU Instructions (AVX, etc.) zur Optimierung verwendet werden und für Systeme ohne diese Instructions lediglich ein primitiver und imperformanter Fallback implementiert wurde. Ist natürlich reine Spekulation, aber scheinbar tritt das Problem ja wirklich nur hardwarespezifisch bei Emil auf dessen CPU beispielsweise tatsächlich kein AVX und co. unterstüzt.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
736 Beiträge
 
#32

AW: Hohe CPU Auslastung bei 64Bit Anwendungen

  Alt 30. Aug 2018, 15:19
GDI+ stammt noch aus XP-Zeiten, die 64Bit Portierung muss also erst viel später gekommen sein. Durchaus möglich, dass da etwas geschlampt wurde. Besonders ärgerlich: Im Gegensatz zu GDI, ist GDI+ auf Win7 nur Softwareseitig implementiert. Das machts natürlich um so ärgerlicher.
Da man Trunc nicht auf einen Integer anwenden kann, muss dieser zuerst in eine Float kopiert werden
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#33

AW: Hohe CPU Auslastung bei 64Bit Anwendungen

  Alt 30. Aug 2018, 17:55
Zitat:
kann es nur noch ein implementationstechnisches Problem der GDI+ Schnittstelle sein.
Ok.. Ich lade GDI+ dynamisch.
Aber selbst wenn das ein Problem sein sollte was ich bezweifeln möchte müssten die gleichen Probleme dann auch unter 32Bit auftreten.
Denn auch hier wird sie Dynamisch geladen.

Ich habe die Typen Graphics und Image als LONG_PTR definiert weil meine Properties in einem vordefiniert Speicherbereich der Winproc geschrieben und gelesen werden.. siehe

Zitat:
cbWndExtra!
Extra Class Memory Specifies the amount of extra memory, in bytes, that the system should reserve for the class. All windows in the class share the extra memory and can use it for any application-defined purpose. The system initializes this memory to zero.
um sie nachher nicht extra noch einmal konvertieren zu müssen.
Die Größe des Speicherbereich ist dann abhängig von 64 btw. 32Bit. Deshalb *SizeOf(LONG_PTR)
Die Propertys werden dann mit SetWindowLongPtr geschrieben und GetWindowLongPtr gelesen.

Also es ist schon optimiert.
Man kann es drehen wie man will da ist leider nichts zu machen.

gruss

Geändert von EWeiss (30. Aug 2018 um 18:16 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 16:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf