Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.024 Beiträge
 
Delphi 12 Athens
 
#53

AW: Ini-Inhalt geht in sehr seltenen Fällen verloren (TMemIniFile)

  Alt 12. Jan 2016, 13:17
Diese Code-Sequenz ist in beiden Fällen aber dieselbe. Relevant ist daher nicht die absolute Dauer, sondern die Differenz zwischen mit oder ohne vorhandener Ini-Datei.
Dann nimm dort doch mal das UpdateFile ganz raus. Damit kannst du dann die Zeit für das Laden bzw. den internen Aufbau des TMemIniFile messen, denn geschrieben wird dann ja nicht. Wie unterscheiden sich nun die Werte mit und ohne UpdateFile?

Wenn du das mal genauer untersuchst, wirst du feststellen, daß die meiste Zeit außerhalb des Aufrufs von UpdateFile verbraucht wird. Es ist ja auch ein Unterschied, ob die INI-Datei bereits beim Create fehlt oder erst beim Aufruf von UpdateFile durch die Umbenennung verschwindet.

Du schreibst jedes Mal den exakt selben Inhalt in die Datei. Ich generiere den String absichtlich jedes Mal zufällig, damit zwar die Datei-Struktur gleich bleibt, aber sich der Inhalt ändert. Eben ähnlich wie in der normalen Verwendung.
Für den Schreibvorgang ist nur der aktuelle Inhalt bzw. die Größe der zu schreibenden Datei relevant. Bei TMemIniFile wird ja nicht in die bestehende Datei geschrieben sondern über CreateFile die Datei neu erzeugt und eine eventuell vorhandene überschrieben. Ich verwende ganz bewusst immer denselben Inhalt um Schwankungen zu vermeiden und die gemessenenen Werte vergleichbar zu machen.


Hier schreibst Du 100 Mal dieselbe Datei. Ich bin mir ziemlich sicher, dass Windows hierbei Optimierungs-Routinen beim Schreiben einsetzt, was den Vorgang ad absurdum führt.
Das kannst du leicht überprüfen, indem du eben nur einmal das UpdateFile aufrufst und den Faktor bei der Zeitermittlung auf 1 setzt. Der ermittelte Wert wird zumindest in der gleichen Größenordnung liegen.

Aber ich habe hier schon mehr geschrieben, als nötig ist. Mag jeder selber mit den Informationen anfangen was er für richtig hält.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat