Thread Verzeichnis durchsuchen - C# viel schneller als Perl?
(15 answers)
Opened by Gustl at 2013-07-04 16:41
Wenn es wirklich schnell sein soll würde ich es so machen :
Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 sub process_files { my @stack=@_; my ($p,$dh,$path); while(@stack) { path = pop(@stack); opendir ($dh, $path) or die "Unable to open $path: $!\n"; for( readdir($dh) ) { next if( $_ eq '.' or $_ eq '..' ); $p=$path.'/'.$_; if( -d $p ) { push(@stack, $p); } elsif( substr($_,-4,4) eq '.pdw' ) { push(@files_erg, $_); } } closedir ($dh); } } Verzicht auf Rekursion. Verzicht auf Regex. Vergleich nur mit eq und substr. Variablen außerhalb der Schleife definiert. Benutzen von push und pop. Aber natürlich ist das signifikant langsamer als statisch typisierte Sprachen wie C# oder Java. Beide erzeugen einen optimierten Bytecode der einen Typen-Casts umgeht wo es nur möglich ist. Auch werden ganze Codeblöcke auf optimierten Binärcode abgebildet. Und dann sind das noch die Windows-spezifischen Optimierungen von C#. Da werden Teilweise ganz andere Schnittstellen benutzt als bei perl. Man darf halt nicht vergessen, das perl für unixuide Systeme entwickelt wurde. |