Thread Verzeichnis durchsuchen - C# viel schneller als Perl?
(15 answers)
Opened by Gustl at 2013-07-04 16:41 Code: (dl
)
1 opendir (DIR, $path) or die "Unable to open $path: $!\n"; Wenn das Skript selber nicht gerade im $path steht, dann schlägt -d $_ aber fehl, es sei denn, im aktuellen Verzeichnis ist ein Eintrag vorhanden, der genauso lautet, wie der in $_ vorliegende. Ansonsten macht das !-d $_ hier wenig Sinn. Wenn Du erfolgreich Verzeichnisse aus @files heraushälst, kannst das Skript nicht in diesen Verzeichnissen weitersuchen. Ausserdem hast Du in der foreach-Schleife ebenfalls einen Test auf Verzeichnis. Warum zwei mal? Das kostet Zeit... Dieses und das map (kostet auch Zeit...) könntest Du IMHO vermeiden, wenn Du in process_files direkt nach dem Übernehmen nach $path ein chdir machen würdest. Und das print für jede Datei würde ich auch rauswerfen und erst am Schluss machen mit gefülltem Ergebnis-Array machen. Du suchst nach Dateien mit der Endung .pdw? Dann veranker doch Deinen Regex am Stringende. Jetzt sucht er im gesamten Pfad/Dateinamen nach einer Zeichenfolge .pdw (inklusive einem vorangestellten .*, das auch wieder kostet); das kostet Zeit, überall zu suchen... Ungetestet, quick-hacked: Code: (dl
)
1 use Cwd; edit: Habe noch mal drüber nachgedacht. Dem chdir($path) geschuldet, muss das opendir auf "." losgelassen werden... edit2: Cwd::getcwd nachgetragen... Last edited: 2013-07-04 22:36:06 +0200 (CEST) meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen! |