AGB  ·  Datenschutz  ·  Impressum  







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

Scan for Files mit der PPL

Ein Thema von Smiley · begonnen am 19. Jun 2020 · letzter Beitrag vom 19. Aug 2020
Antwort Antwort
Benmik

Registriert seit: 11. Apr 2009
577 Beiträge
 
Delphi 12 Athens
 
#1

AW: Scan for Files mit der PPL

  Alt 21. Jun 2020, 16:15
Ich habe mich in den letzten Wochen sehr mit der MFT beschäftigt. Typisches Ergebnis: 102.000 Dateien und 1.100 Verzeichnisse mit Basisinformationen in 700 msec (bei neu gestartetem Rechner, beim zweiten Einlesen etwa 250 msec., von NVME gelesen).

Himitsu meint, Auslesen der MFT kommt wegen der notwendigen Adminrechte nicht in Frage. Das möchte ich doch mal hinterfragen. Wenn man selbst das Programm anwendet, ist das sowieso egal. Aber auch sonst frage ich mich, was daran so schlimm sein soll, wenn das Programm mit Adminrechten läuft. Hardware-Diagnostik-Tools laufen immer nur mit Adminrechten. Es ist wie mit den verrufenen ADS: Man verbannt doch keine Messer aus der Küche, weil man damit jemand erstechen kann. Was ist schlimm an einem mit Adminrechten laufenden Programm, das nichts Böses tut?

Eine andere Möglichkeit ist auch, es dem Anwender zu überlassen ("Möchtest du lieber 0,7 oder 70 Sekunden warten?") oder den MFT-Teil nur bei Bedarf zu starten (einige meiner Fragen in letzter Zeit zielten ja in diese Richtung). Zu bedenken ist auch, dass man nach einmaligem Einlesen ja den gesamten Datenbestand der Platte hat und danach alle Filtervorgänge in Millisekunden ablaufen (wenn's sein muss, müsste man zwischenzeitliche Dateiveränderung über das USN-Journal berücksichtigen).

Natürlich geht das Auslesen der MFT nicht in allen Szenarien. Aber da ich ja - wie alle hier - Everything benutze, kommt ein grundsätzlicher Verzicht darauf für mich nicht (mehr) in Frage.
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#2

AW: Scan for Files mit der PPL

  Alt 21. Jun 2020, 16:20
Zitat:
Himitsu meint, Auslesen der MFT kommt wegen der notwendigen Adminrechte nicht in Frage. Das möchte ich doch mal hinterfragen. Wenn man selbst das Programm anwendet, ist das sowieso egal. Aber auch sonst frage ich mich, was daran so schlimm sein soll, wenn das Programm mit Adminrechten läuft.
Netzlaufwerke kann man mit Adminrechten vergessen.

Funktioniert euer MFT-Code auch Ext4- oder XFS-formatierten Festplatten?
  Mit Zitat antworten Zitat
Benmik

Registriert seit: 11. Apr 2009
577 Beiträge
 
Delphi 12 Athens
 
#3

AW: Scan for Files mit der PPL

  Alt 21. Jun 2020, 16:28
Netzlaufwerke kann man mit Adminrechten vergessen.
Ja, vor allem das hatte ich mit "nicht in allen Szenarien" gemeint.
Funktioniert euer MFT-Code auch Ext4- oder XFS-formatierten Festplatten?
Ich kenne Ext4 oder XFS nur vom Namen her, haben die eine MFT? Also nein, gemeint ist natürlich NTFS.
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#4

AW: Scan for Files mit der PPL

  Alt 21. Jun 2020, 16:32
Immer mehr Gründe, über die ganz einfachen, bereits vorhandenen Implementierungen zu gehen.
Ob das jetzt 23 oder 22 Sekunden dauert, ist dabei vollkommen egal und rechtfertigt nicht die Zeit die man investieren muss, um FindFirstFileEx und alle anderen umzusetzen.
  Mit Zitat antworten Zitat
Benmik

Registriert seit: 11. Apr 2009
577 Beiträge
 
Delphi 12 Athens
 
#5

AW: Scan for Files mit der PPL

  Alt 21. Jun 2020, 16:33
Ich habe mal gerade Himitsus Vergleich ausprobiert und muss etwas einschränkend sagen, dass mein System offenbar sehr schnell ist (Rechner wurde für jeden Lauf neu gestartet):
Delphi-Quellcode:
FindFirstFileEx Large first : count 515886, seconds 7,3693847
FindFirstFileEx Large second : count 515886, seconds 3,1792396
FindFirstFileEx Large *.txt : count 3389, seconds 3,2297414

TDirectory.GetFiles first : count 515887, seconds 9,9470432
TDirectory.GetFiles second : count 515887, seconds 3,6347474
TDirectory.GetFiles *.txt : count 3390, seconds 3,1972282

FindFirstFile first : count 515887, seconds 8,8944801
FindFirstFile second : count 515887, seconds 3,0955637
FindFirstFile *.txt : count 3390, seconds 3,2385233

FindFirstFileEx first : count 415328, seconds 16,7086252
FindFirstFileEx second : count 415328, seconds 8,9083499
FindFirstFileEx *.txt : count 2158, seconds 8,9315763
Die Implementierung von "MasterFileTable" hat mir besonders gut gefallen; die ist auch für den Anfänger richtig gut verständlich!

Geändert von Benmik (21. Jun 2020 um 17:00 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Smiley
Smiley

Registriert seit: 9. Dez 2004
Ort: Gedern
210 Beiträge
 
Delphi 12 Athens
 
#6

AW: Scan for Files mit der PPL

  Alt 21. Jun 2020, 16:42
Ich benötige beim Einlesen auch das AccessDate, ModifyDate usw. da nutzt das schnelle suchen dann eh nichts oder kann man das mit diesen Befehlen auch gleich einlesen ?
  Mit Zitat antworten Zitat
Benmik

Registriert seit: 11. Apr 2009
577 Beiträge
 
Delphi 12 Athens
 
#7

AW: Scan for Files mit der PPL

  Alt 21. Jun 2020, 16:55
Dabei ist (neben für die MFT wichtigen Informationen):
Delphi-Quellcode:
Filename;
Fragmented;
RealFileSize;
AllocatedFileSize;
CreationTime;
WriteTime;
ReadTime;
NumHardlinks;
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#8

AW: Scan for Files mit der PPL

  Alt 21. Jun 2020, 16:55
Zitat:
Ich habe mal gerade Himitsus Vergleich ausprobiert und muss etwas einschränkend sagen, dass mein System offenbar sehr schnell ist:
Scheinbar hat deine NVME hier Nachteile. Ich dachte immner, die teuren Dinger sind so schnell.

Verglichen zu einer SATA-SSD mit gutem DRAM-Cache:

*
FindFirstFileEx Large first : count 581280, seconds 0,5515497‬
FindFirstFileEx Large second : count 581280, seconds 0,5521473‬
FindFirstFileEx Large *.txt : count 581280, seconds 0,6303993‬
*

Mit gelöschtem Cache sollte es noch immer unter 7 Sekunden liegen.

Geändert von DieDolly (21. Jun 2020 um 17:11 Uhr)
  Mit Zitat antworten Zitat
Benmik

Registriert seit: 11. Apr 2009
577 Beiträge
 
Delphi 12 Athens
 
#9

AW: Scan for Files mit der PPL

  Alt 21. Jun 2020, 17:05
Da hast du recht, meine NVME ist eine ohne DRAM-Cache, ich fand den Aufpreis für z.B. eine EVO nicht gerechtfertigt. Maßgeblich ist aber eigentlich das Einlesen nach Neustart, bei allem anderen schrumpfen die Zeiten sowieso gewaltig. Dass du beim ersten Einlesen unter 7 sec bleibst, möchte ich erstmal sehen.
  Mit Zitat antworten Zitat
Antwort Antwort


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