AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Große Textdateien spitten

Ein Thema von muhael · begonnen am 29. Okt 2017 · letzter Beitrag vom 30. Okt 2017
Antwort Antwort
Seite 3 von 4     123 4      
Benutzerbild von Luckie
Luckie

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

AW: Große Textdateien spitten

  Alt 29. Okt 2017, 20:58
Moment. Du schreibst doch in vier? Ich habe jetzt euren Code nicht studiert, aber du hast eine zum Lesen geöffnet und vier zum schreiben. Oder schließt er die zu schreibenden Dateien immer wieder.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
muhael

Registriert seit: 5. Mär 2013
42 Beiträge
 
#22

AW: Große Textdateien spitten

  Alt 29. Okt 2017, 20:59
Das Habe ich uach schon überlegt, aber jede zeile gibt nach der Analyse auch einen wert wieder, dieser wird mit den schon bestehenden Werten verglichen und geschaut ob er schon vorhanden ist, wenn nicht wird er hinzugefügt. Problem an 4 threads die jeweils eine Zeile haben ist ja dann, dass die threads warten müssen um auf den Speicher von der Liste zugreifen zu können
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#23

AW: Große Textdateien spitten

  Alt 29. Okt 2017, 21:00
Moment. Du schreibst doch in vier? Ich habe jetzt euren Code nicht studiert, aber du hast eine zum Lesen geöffnet und vier zum schreiben. Oder schließt er die zu schreibenden Dateien immer wieder.
Lies den thread, er will das splitten damit da nachher 4 threads darauf zugreifen können. Deswegen meine Idee mit dem share read, kein shreiben vorher notwendig
Fritz Westermann
  Mit Zitat antworten Zitat
muhael

Registriert seit: 5. Mär 2013
42 Beiträge
 
#24

AW: Große Textdateien spitten

  Alt 29. Okt 2017, 21:01
Moment. Du schreibst doch in vier? Ich habe jetzt euren Code nicht studiert, aber du hast eine zum Lesen geöffnet und vier zum schreiben. Oder schließt er die zu schreibenden Dateien immer wieder.
ja ich habe 1 zum lesen und 4 zum schreiben geöffnet und schließe sie am ende der Funktion erst
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#25

AW: Große Textdateien spitten

  Alt 29. Okt 2017, 21:05
Wieso suchen? Ans Ende springen müsste doch reichen.
An das Ende von was springen?

1. Zeile -> Datei 1
2. Zeile -> Datei 2
3. Zeile -> Datei 3
4. Zeile -> Datei 4

Und wieder von vorne, bis die Datei vollständig aufgeteilt ist.

Irgendwie muss ich also für jede Zeile wissen, wo sie anfängt und wo sie aufhört. Da die Zeilen unterschiedlich lang sind, kann man ja nicht eine bestimmte Anzahl von Zeichen "am Stück" lesen.

Die Idee von Fritzew ist aber auch nicht von der Hand zu weisen. Man spart viel Plattenplatz und die entsprechenden Schreiboperationen.
Wenn wer jede vierte Zeile verarbeiten muss, kann er ja die übrigen Zeilen überlesen.
Und wo die erste Zeile für den Beginn ist, kann man ja mit einem Offset für die am Anfang zu überlesenden Zeilen angeben.

Und ob jetzt vier Threads vier Dateien lesen oder vier Threads eine Datei, dürfte für den Schreibkopf auch eher egal sein. Bzw.: Das was bei einer Datei gelesen wird, liegt physikalisch vermutlich näher beeinander, als bei auf mehrere Dateien verteilten Inhalten.

Die Sectorgröße ist doch abhängig vom Dateisystem und nicht von der Hardware. Oder irre ich da?

Eine Datei wird in 'ner Schleife gelesen und in vier wird geschrieben. Geöffnet wird am Anfang und am Ende alles geschlossen und nicht zeilenweise auf und zu.

Aber es wäre doch einen Versuch Wert, die Datei nicht zu splitten, sondern jeweils nur die vierte Zeile auszuwerten. Man muss nur am Anfang angeben, ob keine, eine, zwei oder drei Zeilen zu überlesen sind.
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#26

AW: Große Textdateien spitten

  Alt 29. Okt 2017, 21:06
Das Habe ich uach schon überlegt, aber jede zeile gibt nach der Analyse auch einen wert wieder, dieser wird mit den schon bestehenden Werten verglichen und geschaut ob er schon vorhanden ist, wenn nicht wird er hinzugefügt. Problem an 4 threads die jeweils eine Zeile haben ist ja dann, dass die threads warten müssen um auf den Speicher von der Liste zugreifen zu können
Das verstehe ich jetzt nicht,
Ob der Thread nun jede x zeile aus einem File oder jede Zeile aus „seinem“ file liest ist doch egal...
Ich meine ja gib dem Thread mit welche zeile er zu verarbeiten hat also jeder thread verarbeitet nur jede xte zeile. Wobei x für jeden anderst ist
Thread 1 ab erster zeile dann 3überspringen....
Thread 2 ab der 2 zeilw dann 3 überspringen..
Etc....
Fritz Westermann
  Mit Zitat antworten Zitat
Glados
(Gast)

n/a Beiträge
 
#27

AW: Große Textdateien spitten

  Alt 29. Okt 2017, 21:09
Zitat:
Nachtrag 2: Bei HDDs macht es sich ja immer gut, wenn die Buffergröße sich an die Sectorgröße des Dateisystems orientiert. Gibt es so was bei SSDs eigentlich noch?
Dafür müsste man aber auch erstmal an diese Information gelangen.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

AW: Große Textdateien spitten

  Alt 29. Okt 2017, 21:11
Ah. Ja. Bei der zu lesenden Datei. Ich nehme alles zurück und behaupte das Gegenteil
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
muhael

Registriert seit: 5. Mär 2013
42 Beiträge
 
#29

AW: Große Textdateien spitten

  Alt 29. Okt 2017, 21:17
Das verstehe ich jetzt nicht,
Ob der Thread nun jede x zeile aus einem File oder jede Zeile aus „seinem“ file liest ist doch egal...
Ich meine ja gib dem Thread mit welche zeile er zu verarbeiten hat also jeder thread verarbeitet nur jede xte zeile. Wobei x für jeden anderst ist
Thread 1 ab erster zeile dann 3überspringen....
Thread 2 ab der 2 zeilw dann 3 überspringen..
Etc....
Der Thread gibt auch Werte zurück.
falls er eine Zeile nicht analysieren konnte gibt er die Zeile zurück, diese wird in eine Datei geschrieben (Um nicht den Ram unnötig zu füllen, da ja die Dateien 3-4 GB groß sind)
Analysierte Zeilen werden zurückgegeben und mit der liste der bereits anderen Analysierten Zeilen verglichen und ggf hinzugefügt.

und wenn 4 Threads gleichzeitig 4 Zeilen bearbeiten und dann gleichzeitig die Liste abrufen wollen gibts ja probleme mit dem Zugriff darauf
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#30

AW: Große Textdateien spitten

  Alt 29. Okt 2017, 21:21
Das verstehe ich jetzt nicht,
Ob der Thread nun jede x zeile aus einem File oder jede Zeile aus „seinem“ file liest ist doch egal...
Ich meine ja gib dem Thread mit welche zeile er zu verarbeiten hat also jeder thread verarbeitet nur jede xte zeile. Wobei x für jeden anderst ist
Thread 1 ab erster zeile dann 3überspringen....
Thread 2 ab der 2 zeilw dann 3 überspringen..
Etc....
Der Thread gibt auch Werte zurück.
falls er eine Zeile nicht analysieren konnte gibt er die Zeile zurück, diese wird in eine Datei geschrieben (Um nicht den Ram unnötig zu füllen, da ja die Dateien 3-4 GB groß sind)
Analysierte Zeilen werden zurückgegeben und mit der liste der bereits anderen Analysierten Zeilen verglichen und ggf hinzugefügt.

und wenn 4 Threads gleichzeitig 4 Zeilen bearbeiten und dann gleichzeitig die Liste abrufen wollen gibts ja probleme mit dem Zugriff darauf
Das ist aber jetzt ein ganz anderes problem, wo helfen Dir da verschiedene Dateien dür den Input?
Im Gegenteil es wird sogar einfacher zu analysieren da es nur einen input gibt
Fritz Westermann

Geändert von Fritzew (29. Okt 2017 um 21:22 Uhr) Grund: Bin am ipad rechtschreibfehler eingebaut��
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 02:23 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