Ich habe die Leistung von F # Listen und Arrays überprüft. Angesichts der Code:Warum die Verarbeitung von Arrays in F # ist schneller als Listen
let list = [ 1.. 100000 ]
for i in 1 .. 100 do ignore (list|>List.map(fun n -> n))
let array = [| 1.. 100000 |]
for i in 1 .. 100 do ignore (array|>Array.map(fun n -> n))
Ich würde beide vermuten sehr ähnliche Zeit laufen in. Tatsächlich stellte sich heraus, dass Arrays über 10 mal schneller sind: Array dauert 28 ms, während die Liste 346 ms dauert! Warum ist das? Ich verstehe das Konzept der Liste in F # und die Tatsache, dass zum Beispiel das Anhängen von Werten zum Auflisten oder Nehmen von Unterfolgen zeitaufwendig ist, aber in diesem Code durchläuft es einfach alle Elemente, so dass ich dachte, dass das Timing sehr vergleichbar sein wird.
Tests im Release-Modus in Visual Studio 2012 (im Debug-Modus Arrays sind etwa 5-mal schneller).
Ich liebe es, negative Stimmen ohne (konstruktive) Kommentare zu bekommen. – rank1
Ich wäre gespannt, was du sehen würdest, wenn du in deinen Tests einen Seq benutzt hättest (kein Witz). Da Seq's faul sind sollte praktisch sofort vorgegangen werden. –
Das ist richtig. – rank1