AGB  ·  Datenschutz  ·  Impressum  







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

Indizierung von Dateien

Ein Thema von -187- · begonnen am 27. Okt 2010 · letzter Beitrag vom 2. Nov 2010
Antwort Antwort
Seite 1 von 2  1 2      
-187-

Registriert seit: 24. Sep 2005
483 Beiträge
 
Delphi 2010 Architect
 
#1

AW: Indizierung von Dateien

  Alt 27. Okt 2010, 21:26
@-187-
der Code sieht KISS aus, sollte IMHO flott durchlaufen, was für Datenmengen bewegst Du hierbei insgesamt?
40.000 Dateien, der Durchschnitt liegt bei 3-4 kb pro Datei.
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#2

AW: Indizierung von Dateien

  Alt 27. Okt 2010, 21:32
also ca. 160 MB nicht Welt ...
Stringstreams statt Stringlisten für die innere Schleife werden hier auch nicht bringen, wenn es beim zweiten Durchlauf flott läuft.
Du siehst mich ratlos, sorry, flotte Platte, defragmetieren, Virenscanner die üblichen Verdächtigen.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#3

AW: Indizierung von Dateien

  Alt 27. Okt 2010, 21:33
Denke Speicher ist kein Problem, eher die Zahl der Dateien (40.000 Stk). Wäre das ganze eine Datei mit der gleichen Datenmenge, wären es auch ohne prefetch/cache immer fix erledigt.

Denke selbst mit Verteilung auf Threads wird Windows & AntiVirus beim ersten Zugriff auf eine Datei immer ausbremsen.

Die Quellen gleich von Anfang an anders zu speichern (z.B. in Datenbank) ist keine Option?
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.176 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Indizierung von Dateien

  Alt 27. Okt 2010, 21:34
Wieviel Arbeitsspeicher brauch mein Programm ? Gute Frage, wie kann ich das genau messen ? *fg*
Für den Anfang kannst du ja im Taskmanager nachschauen wieviel Arbeitsspeicher deine Anwendung nutzt.

Was ist mit XMLSource.LoadFromFile(FilePath) und XMLSource.Clear...
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
-187-

Registriert seit: 24. Sep 2005
483 Beiträge
 
Delphi 2010 Architect
 
#5

AW: Indizierung von Dateien

  Alt 27. Okt 2010, 21:37
Was ist mit XMLSource.LoadFromFile(FilePath) und XMLSource.Clear...
Was soll damit sein ?

Zum Arbeitsspeicher..naja so 5000-6000 k, also ganz normal...

Ich dachte eigentlich Anfangs das eine DB Anwendung überdimensioniert wäre. Naja das Programm ist fertig und ich bin nicht so begeistert von der Idee umzurüsten

Geändert von -187- (27. Okt 2010 um 21:39 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.176 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Indizierung von Dateien

  Alt 27. Okt 2010, 21:52
Das seh ich erst jetzt:
40.000 Dateien von Festplatte lesen...

Hier sah das für mich noch ganz anders aus:

Oops, ja hab ich natürlich vergessen zu erwähnen. Der Code sieht in etwa so aus:

Code:
var
  XMLSource, IDList: TStringList;
  FoundCount: Integer;
begin
  XMLSource:=TStringList.Create;
  IDList:=TStringList.Create;
  IDList.Text:=Memo1.Text;
  try
    for i:=0 to IDList.Count-1 do
    begin
      FilePath:=ExtractFilePath(ParamStr(0))+IDList.Strings[i]+'.xml';
      XMLSource.LoadFromFile(FilePath);
      if Pos('MyString',XMLSource.Text)>0 then
        Inc(FoundCount);
      XMLSource.Clear;
    end;
  finally
    IDList.Free;
    XMLSource.Free;
  end;
end;
Wo sind deine Daten? Im Memo oder wirklich als Dateien einzulesen?
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
-187-

Registriert seit: 24. Sep 2005
483 Beiträge
 
Delphi 2010 Architect
 
#7

AW: Indizierung von Dateien

  Alt 27. Okt 2010, 21:54
Die Daten sind in den XML Files und werden jedesmal eingelesen. Im Memo stehen nur die Dateinamen (Ohne Endung) ...
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#8

AW: Indizierung von Dateien

  Alt 27. Okt 2010, 21:39
XMLSource.LoadFromFile(FilePath) und XMLSource.Clear...
Beides gleichzeitig ist natürlich unnötig.

Aber denke alleine die Tatsache, dass der zweite Zugriff nur noch <= 1 Sekunde dauert, lässt kaum Hoffnung, dass durch Code-Optimierung viel zu machen ist. Sein Problem sind ja die 10+ Minuten beim ersten Zugriff.

Ich dachte eigentlich Anfangs das eine DB Anwendung überdimensioniert wäre. Naja das Programm ist fertig und ich bin nicht so begeistert von der Idee umzurüsten
40.000 Dateien = Datensätze wäre zumindest ein Wert, wo man darüber nachdenken könnte. Ist natürlich nicht so leicht zu erweitern, wie eine XML-Datei in Suchordner zu kopieren.

Wenn alles XML ist, evtl. eine einzelne Datei mit je einer Zeile pro XML-Datei (XML braucht ja kein CRLF, Zeile: Dateiname?XML-Code). Aber wenn das gelesen wird, kommt sicher gleich der Aufschrei, dass genau so eine Idee förmlich nach einer DB bettelt.

Geändert von Satty67 (27. Okt 2010 um 21:47 Uhr)
  Mit Zitat antworten Zitat
-187-

Registriert seit: 24. Sep 2005
483 Beiträge
 
Delphi 2010 Architect
 
#9

AW: Indizierung von Dateien

  Alt 27. Okt 2010, 21:41
Gibt es denn ne Möglichkeit den aktuellen Windows Cache zu speichern und bei jedem Neustart wiederherzustellen
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#10

AW: Indizierung von Dateien

  Alt 27. Okt 2010, 22:02
Gibt es denn ne Möglichkeit den aktuellen Windows Cache zu speichern und bei jedem Neustart wiederherzustellen
Per Systemeinstellung... glaube ich nicht Die Größe lässt sich einstellen, ist aber dann nur ein größerer leerer Cache beim Start. Alternativ Suspend-to-disk, statt ausschalten.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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