AW: PNX-Convert
@ klingmeiding
Das ist weniger eine Sache, die das Tool betrifft, sondern mehr eine Sache der Verwaltung der übergeordneten Umgebung, innerhalb derer ja das Programm läuft.
Es werden bei diesem Tool ja sehr viele Dateien nacheinander geöffnet, Variablen für die Analyse und für die konvertierten Ergebnisse angelegt, sowie schlußendlich jeweils eine neue Datei erzeugt.
Auch wenn Variablen nach der Benutzung vom Programm sofort wieder freigegeben ("zerstört") werden, so sind sie - wie z.B. auf einer Festplatte - zwar als gelöscht gekennzeichnet, aber immer noch vorhanden.
Für Arbeitsspeicher bedeutet das, das der Platz für das System immer noch belegt ist.
Je nach konkreter Umgebung läuft dann irgendwann mal - asynchron - eine sogenannte "Garbage Collection" durch. Erst die gibt diesen Speicher zur weiteren/erneuten Benutzung tatsächlich wieder frei.
Wenn Du also ein "schwaches" System hast, läuft es dann also irgendwann immer an der Grenze des für dieses Programm vom System zugewiesenen Speichers. Das heißt, es muß dann mitten im Programmlauf erst neuer, zusätzlicher Arbeitsspeicher angefordert werden (weil der alte ja scheinbar immer noch belegt ist), was auch immer eine gewisse Zeit dauert und nur möglich ist, sofern noch welcher zum Zuweisen vorhanden ist, oder das Programm "wartet" praktisch auf die nächste Garbage Collection. Die Grenze des maximal zugewiesenen Arbeitsspeichers liegt bei 32-Bit-Systemen übrigens bei 2 GB pro Programm, unabhängig davon, wiel RAM tatsächlich im Rechner steckt.
Das alles sind übergeordnete Prozesse, die je nach Programmiersprache/Umgebung unterschiedlich gehandhabt werden. Man könnte zwar die Collection auch per Programmbefehl "erzwingen", aber dann mußt Du abwägen, nach welchem Zeitraum oder wieviel Bildern Du das jeweils machst, denn generell verlangsamt es sonst den gesamten Lauf nicht unerheblich, wenn Du nur eine relativ kleine Anzahl Bilder konvertieren willst.
Alternativ könntest Du beim Programmstart einen kompletten Satz der benötigten Variablen und Felder als sogenannte "globale Variablen" anlegen lassen. Sie werden dann einmalig erzeugt und bleiben im gesamten Programmlauf erhalten. Ich weiß, diese Art der Programmierung ist eigentlich verpönt, weil gefährlich (fehlerträchtig). Denn Du selbst müßtest dafür sorgen, das ALLE Variablen nach jeder einzelnen Dateikonvertierung auf ihre Startwerte zurückgesetzt werden müssen. Und Du darfst keine einzige vergessen!
Aber der Geschwindigkeitsgewinn ist enorm...