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

murphy
 2013-07-05 16:50
#168750 #168750
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Also ich würde annehmen, dass das eher am problemspezifischen Code liegt als an der Sprache.

Mit den kanonischen Bordmitteln ist bei mir zum Beispiel Perl schneller als .NET:
Code (shell): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$ time perl fifi.pl /usr/lib/perl5
83

real    0m0.991s
user    0m0.756s
sys     0m0.228s
(0) 2032: murphy@luna ~ $ dmcs -optimize+ fifi.cs && time ./fifi.exe /usr/lib/perl5
83

real    0m2.414s
user    0m1.304s
sys     0m1.160s
(0) 2033: murphy@luna ~ $ fsharpc --optimize+ fifi.fsx && time ./fifi.exe /usr/lib/perl5
F# Compiler for F# 3.0 (Open Source Edition)
Freely distributed under the Apache 2.0 Open Source License
83

real    0m2.132s
user    0m1.268s
sys     0m0.912s


more (2.7kb):
Perlcode:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
use 5.012;
use warnings;

use File::Find;

my @stuff;
for (1..1000) {
    @stuff = ();
    find(sub { push @stuff, $_ if (/\.pod$/) }, @ARGV);
}

say scalar(@stuff);

more (3.4kb):
C#-Code:
Code (csharp): (dl )
1
2
3
4
5
6
7
8
9
10
11
using System.IO;

public class FiFi {
  public static int Main(string[] args) {
    string[] stuff = {};
    for (int i = 1; i <= 1000; i++)
      stuff = Directory.GetFiles(args[0], "*.pod", SearchOption.AllDirectories);
    System.Console.WriteLine(stuff.Length);
    return 0;
  }
}

more (622b):
F#-Code:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
open System.IO

[<EntryPoint>]
let main args =
let mutable stuff: string[] = [||]
for _ in 1..1000 do
stuff <- Directory.GetFiles(args.[0], "*.pod", SearchOption.AllDirectories)

System.Console.WriteLine(stuff.Length)
0
When C++ is your hammer, every problem looks like your thumb.

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