(Gast)
n/a Beiträge
|
AW: Hohe CPU auslastung bei 64Bit Anwendnung
24. Aug 2018, 04:51
[...] mehr gibt es da nicht zu sagen.
Doch, z.B. was das Programm tut. Und welche Versuche du bereits unternommen hast, dem auf die Spur zu kommen, z.B. Teile des Programms deaktivieren, Code auskommentieren usw. Oder im Process Explorer oder Process Hacker nachschauen, welche Funktion in welcher DLL genau die Last verursacht. Oder den Process Monitor mitschreiben lassen, welche Aktionen dein Programm macht. All das gibt Hinweise auf die Ursache.
Grüße
Dalai
Ich weis wo die Position ist an der die Auslastung auftritt.. ABER nicht mit der 32BIT.
Und das ist was mich stört ich kann es nicht beheben.
Hier ist der Code!
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;
Aber was nutzt es denn der gleiche code unter 32BIT verursacht 0% Auslastung (also insgesamt vom kompletten Programm) und 64Bit 25%
Die Funktionen dazu
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;
gruss
Geändert von EWeiss (24. Aug 2018 um 04:54 Uhr)
|
|
|