Thread Verzeichnis durchsuchen - C# viel schneller als Perl? (15 answers)
Opened by Gustl at 2013-07-04 16:41

Gustl
 2013-07-04 16:41
#168718 #168718
User since
2011-01-27
443 Artikel
BenutzerIn
[Homepage]
user image
Hallo,

ein Kollege von mir durchsucht ein Verzeichnis (eingeschlossen Unterverzeichnisse) nach *.pdw Files (mit C#)
Das ganze dauerte bei ihm ca. 2min.

Dann habe ich mir gedacht dies mit Perl mal zu probieren um zu vergleichen wie lange Perl dafür benötigt.

Folgendes Script:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!/usr/bin/perl -w

use strict;
use Time::HiRes qw(gettimeofday tv_interval);
my $t0 = [gettimeofday];

my $base_path = "K:/CAD_FAB";
if (!defined($base_path) || $base_path eq '') { die "You need to specify a directory (e.g. 'dir_bot.pl subfolder')!\n"; }

my @directorys;
my @files_erg;
# Durchsucht rekursiv den Path nach Dateien und Verzeichnissen
process_files ($base_path);

print "\nAnzahl pdw-Files:".scalar(@files_erg)."\n";

# benötigte Zeit ausgeben
my $sec = tv_interval($t0);
my $min = int($sec/60);
my $ms = $1 if( ($sec =~ /\.(\d)/));
$sec = $sec%60;
print "\nDie Ausfuehrung dauerte ".$min." Minuten und ".$sec.".".$ms." Sekunden.\n";

exit;

# Durchsucht rekursiv den Path nach Dateien .pdw (Unterverzeichnisse eingeschlossen)
sub process_files {
    my $path = shift;

    opendir (DIR, $path) or die "Unable to open $path: $!\n";
    my @files = grep { !/^\.\.?$/ && !-d $_  } readdir (DIR);
    closedir (DIR);

    @files = map { $path . '/' . $_ } @files;
    foreach(@files){
      unless(-d $_){
        if( $_ =~ /.*\.pdw/ ){
          print $_."\n";
          push(@files_erg, $_);
        }   
      }
      else{
        #push(@directorys, $_);
        process_files ($_);
      }     
    }      
}


Nun diese Script benötigt aber fast 7Minuten!
Habe ich im Script eine Bremse drin?

Das eine interpretierte Sprache nicht so schnell ist wie c# ist schon klar, aber der Unterschied ist schon enorm finde ich.

Würde mich interessieren.

Gruß Gustl
Last edited: 2013-07-04 16:56:22 +0200 (CEST)

View full thread Verzeichnis durchsuchen - C# viel schneller als Perl?