AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Speicherauslastung senken

Ein Thema von G-Baumstamm · begonnen am 17. Nov 2010 · letzter Beitrag vom 22. Nov 2010
 
G-Baumstamm

Registriert seit: 9. Jan 2010
63 Beiträge
 
Delphi 7 Enterprise
 
#1

Speicherauslastung senken

  Alt 17. Nov 2010, 07:31
Delphi-Version: 7
Joho,

habe eine Anwendung, die in mehreren gleichen Durchläufen Klicks auf dem Bildschirm ausführt. Hierzu ist nach einigen Klicks etwas Wartezeit eingebaut, entweder statisch über Sleep oder dynamisch über folgende Prozedur:

Delphi-Quellcode:
procedure Warten(x,y,Farbe: integer);
  var C: TCanvas;
      Count, Pixel: integer;
begin
  Count := 0;
  repeat
    if Count = 0 then C := TCanvas.Create;
    C.Handle := GetWindowDC(GetDesktopWindow);
    Pixel := GetPixel(C.Handle,x,y);
    inc(Count);
  until (Pixel = Farbe) or (Count = 1000);
  C.Free;
end;
Die Prozedur kontrolliert die übergebenen Koordinaten solange, bis der Pixel entweder die übergebene Farbe hat, oder die andere Abbruchbedingung erfüllt ist.

Diese Prozedur wird mehrfach an verschiedenen Stellen aufgerufen. Nach jedem Durchlauf habe ich testweise meine Speicherauslastung mit der hier beschriebenen Methode geprüft, und festgestellt das sie nach jedem Durchlauf um etwa 0,5 MB gestiegen ist. Es muss definitiv an dieser Schleife liegen, auch wenn ich alles andere auskommentiere tritt der Effekt auf. Warum? Ich erzeuge doch nur ein einziges mal ein Objekt, welches ich nachher auch immer wieder frei gebe?!

Was aber das eigentliche Problem ist: mit jedem Durchlauf nimmt die Geschwindigkeit ab, beim 1. und 2. gehts noch, aber beim 3. oder spätestens beim 4. werden die Aktionen deutlich langsamer ausgeführt. Die statischen Wartezeiten reichen dann oft nicht mehr, und das Programm verheddert sich. Aber hey, ich hab 4GB RAM, da können diese 0,5 MB doch keinen Unterschied machen?!

Hoffe jemand kann etwas gegen meine Verwirrung tun ... Danke
Daniel NR

Geändert von mkinzler (22. Nov 2010 um 11:18 Uhr) Grund: Code-Tag durch Delphi-Tag ersetzt
  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 14:44 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