AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein while not Eof(myFile), wie CPU Load in den Griff bekommen?
Thema durchsuchen
Ansicht
Themen-Optionen

while not Eof(myFile), wie CPU Load in den Griff bekommen?

Ein Thema von schwa226 · begonnen am 21. Sep 2011 · letzter Beitrag vom 27. Sep 2011
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#11

AW: while not Eof(myFile), wie CPU Load in den Griff bekommen?

  Alt 22. Sep 2011, 11:10
PS: paralelle Zugriffe auf eine Festplatte bremsen sich gegenseitig aus.

Die Leseköpfe sind langsam
- also sequentielles Arbeiten ist da besser (solange zwischendurch nicht mindestens genausolange gerechnet, wie auf dem Datenträger drauf rumgemacht wird)
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#12

AW: while not Eof(myFile), wie CPU Load in den Griff bekommen?

  Alt 22. Sep 2011, 11:37
PS: paralelle Zugriffe auf eine Festplatte bremsen sich gegenseitig aus.
Ich dachte, das hätte ich bereits erwähnt?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#13

AW: while not Eof(myFile), wie CPU Load in den Griff bekommen?

  Alt 22. Sep 2011, 17:32
Und ich habe gerade auch schon erwähnt, dass genau das durch die MMF minimiert wird. Wir drehen uns im Kreis. Hilfe, eine Zeitschleife.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#14

AW: while not Eof(myFile), wie CPU Load in den Griff bekommen?

  Alt 22. Sep 2011, 18:35
Das Problem was ich noch habe, ist das ich gleichzeitig auch eine SQLite Database genau so durchsuchen will.

Meine Idee ansonsten ist die Dateien global einzulesen. Bei einer Suche wird zuerst überprüft ob sich die Datei verändert hat (Durch externen Editor). Wenn nicht dann die Globale (z.B. StringList) verwenden oder ansonsten halt die Datei neu laden. Um die Daten aber neu zu laden bräuchte man wieder eine ThreadSafe StringList was wieder den gleichzeitigen Zugriff blockiert.
Mir scheint, daß nicht der zugriff auf die Festplatte das Problem ist, sondern daß hier einige Abläufe nicht richtig zueinander passen.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
FredlFesl

Registriert seit: 19. Apr 2011
293 Beiträge
 
Delphi 2009 Enterprise
 
#15

AW: while not Eof(myFile), wie CPU Load in den Griff bekommen?

  Alt 22. Sep 2011, 18:40
Und ich habe gerade auch schon erwähnt, dass genau das durch die MMF minimiert wird. ...
Komisch, das (MMF superschnell ist) konnte ich bisher noch nicht feststellen. Vielleicht habe ich eine falsche Klasse.. Wäre das ein Thema für einen separaten Thread, oder hast Du zufällig schon was vorbereitet?
Das Bild hängt schief.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#16

AW: while not Eof(myFile), wie CPU Load in den Griff bekommen?

  Alt 22. Sep 2011, 22:17
In dem verlinkten Thread findest du eine Demo. Von SSD habe ich damit Geschwindigkeiten von 300 MiB/s beim zeichenweisen (!) Auslesen.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
schwa226

Registriert seit: 4. Apr 2008
400 Beiträge
 
#17

AW: while not Eof(myFile), wie CPU Load in den Griff bekommen?

  Alt 23. Sep 2011, 10:21
Zur Erklärung:
Jeder Thread hat einen TCP Client. Dieser empfängt über ein Kommando eine Hex-ID.
Mit dieser ID sucht sich nun der Thread aus dem Textfile den dazu passenden String.
Danach startet die eigentliche Abarbeitung der empfangenen Daten.

Um die Textdatei ändern zu können ohne die Anwendung neu starten zu müssen habe ich das File bei jeder Abfrage neu geöffnet und nach der Suche wieder geschlossen.

Wenn ich die Datei einmal öffne und global zur Verfügung stelle werden ja externe Änderungen der Textdatei nicht berücksichtigt. Dann müsste man immer wieder einmal überprüfen ob sich die Datei verändert hat (vielleicht wieder ein eigener Thread).
Um die globale geöffnete Datei zur Laufzeit zu verändern/upzudaten würde dann aber auch eine Threadsichere TStringList benötigt. Oder man started halt die Anwendung neu, was zu einer Unterbrechnung der Verbindung führen würde.
Delphi 2010, Update 4 & 5
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.944 Beiträge
 
Delphi 12 Athens
 
#18

AW: while not Eof(myFile), wie CPU Load in den Griff bekommen?

  Alt 23. Sep 2011, 11:13
Las mich raten, die Datei ist eine filebasierte Datenbank Datei und du möchtest die Datenbank umgehen?
Vielleicht um die beknackten Windows Freigaben nicht machen zu müssen?

Ich glaube nicht das du das sooo hinbekommst.
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#19

AW: while not Eof(myFile), wie CPU Load in den Griff bekommen?

  Alt 23. Sep 2011, 13:33
Das macht auch gar keinen Sinn das zu versuchen.

Genau für das was du beschreibst gibt es Datenbanken...
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#20

AW: while not Eof(myFile), wie CPU Load in den Griff bekommen?

  Alt 23. Sep 2011, 14:04
Wenn ich das jetzt richtig verstanden habe, gibt es maximal $FFFF Strings, die sollten eigentlich problemlos in einer Stringlist verwaltbar sein. Mit sorted=true Und einer Bin.Suche sollte das Suchen so schnell gehen, daß für das Einfügen/Überschreiben neuer Daten genug Zeit bleibt, da könnte man wahrscheinlich noch öfters mal eine Sicherung fortschreiben.

(ein Feuervögelchen realisiert das bestimmt einfacher, aber für echte Männer gilt: für solche Kleinigkeiten brauch ich doch keine DB)

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 21:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz