Variablen

Moderator: Moderatoren

Antworten
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Variablen

Beitrag von Koverhage »

Ich habe das problem, dass unsere Anwendung nach dem Start immer langsamer wird und wollte der Sache mit MEMWATCH auf dem Grund gehen.
Im Fenster PUBLICS
stehen, z.B.

GetList
PromptList
oDesktop
dCCOLOR

GetList benutze ich, ist aber überall als Local deklariert, die anderen benutze ich nicht
Habe auch im Quellcde keine PUBLIC Deklarationen gefunden außer für dCCOLOR in _dccolor.prg
welches ich auch nicht benutze, aber vermutlich dann von Express++ irgendwo.

Woher können die Publics kommen ?

Eventuell liegt es auch am ToolTip Sytem, aber das möchte ich wenn möglich nicht deaktivieren.
Gruß
Klaus
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Variablen

Beitrag von Tom »

Hallo, Klaus.

Wenn Du die Quellcodes von eXpress++ durchsuchst, wirst Du feststellen, dass diese Variablen zwar erzeugt, aber nahezu ausschließlich als LOCALs verwaltet werden. "PromptList" beispielsweise wird von "DC_MenuTo()" verwendet, aber als Parameter. Auch das Tooltip-System macht das nicht. "GetList" oder "oDialog" sind immer Parameter.

"dCColor" wird allerdings von "DC_ClrArr()" als PUBLIC erzeugt. Es findet sich im gesamten Quellcode nur an dieser einen Stelle überhaupt das Kommando "PUBLIC". Ich glaube nicht, dass man diese Funktion überhaupt noch verwenden sollte. Sie steht in irgendeiner impliziten Prozedur.

So oder so, vier Publics verlangsamen nicht Deine Software. Allerdings werden Objekte, die von Objekten referenziert werden, die nicht zerstört werden können, weiter im Speicher gehalten. Der GC zerstört sie nicht. So ähnlich verhält es sich in einigen Situationen mit Arrays. Du solltest Deine Dialoge nacheinander aufrufen und schauen, welche den Speicher nicht freigeben.
Herzlich,
Tom
Antworten