Ich arbeite an einigen schweren CPU gebunden Problem. Ich sehe eine große Leistungsverbesserung, wenn ich das Schlüsselwort inline
verwende. einen Wörterbuch aus der Standard-.net-Bibliothek Gang in einem benutzerdefinierten Schlüssel Comparer erstellen siehe Code und Timing Ergebnisse unterWarum verursacht F # Inline 11x Leistungsverbesserung
https://gist.github.com/4409734
ohne Schlüsselwort inline auf Eq_cmp
> perf_run 10000000 ;;
Real: 00:00:11.039, CPU: 00:00:11.029, GC gen0: 771, gen1: 3, gen2: 1
val it : unit =()
Inline-Schlüsselwort auf Eq_cmp
perf_run 10000000 ;;
Real: 00:00:01.319, CPU: 00:00:01.388, GC gen0: 1, gen1: 1, gen2: 1
val it : unit =()
>
Ich bemerkte auch den großen Unterschied in der Menge von Gen 0 GC mit dem INI Code und nicht inline Code.
Könnte jemand erklären, warum es einen so großen Unterschied gibt?
Sie sind überrascht, wenn eine Optimierung die Leistung verbessert? Dies ist ein vollständig erwartetes Verhalten, obwohl zugegebenermaßen die Größe des Effekts vergleichsweise groß ist. –
Generische Gleichheitstests in F # sind langsam. Ich denke, das ist im Wesentlichen das gleiche Problem wie das hier besprochene: http://stackoverflow.com/questions/6104221/why-is-is-f-code-so-slow/6104300#6104300 –