मैं एफ # सीख रहा हूं और एक चीज जो मुझे इस भाषा के बारे में बताती है वह प्रदर्शन है। मैंने एक छोटा बेंचमार्क लिखा है जहां मैं एक ही भाषा में लिखे गए अनिवार्य-शैली कोड के लिए idiomatic F # की तुलना करता हूं - और मेरे आश्चर्य के लिए, कार्यात्मक संस्करण काफी तेज़ी से आता है। File.ReadAllLines लूप के लिए नियमित से Seq.map तेज?
- पढ़ना:
बेंचमार्क के होते हैं ।
कोड यह रहा:
open System
open System.IO
open System.Diagnostics
let reverseString(str:string) =
new string(Array.rev(str.ToCharArray()))
let CSharpStyle() =
let lines = File.ReadAllLines("text.txt")
for i in 0 .. lines.Length - 1 do
lines.[i] <- reverseString(lines.[i])
File.WriteAllLines("text.txt", lines)
let FSharpStyle() =
File.ReadAllLines("text.txt")
|> Seq.map reverseString
|> (fun lines -> File.WriteAllLines("text.txt", lines))
let benchmark func message =
// initial call for warm-up
func()
let sw = Stopwatch.StartNew()
for i in 0 .. 19 do
func()
printfn message sw.ElapsedMilliseconds
[<EntryPoint>]
let main args =
benchmark CSharpStyle "C# time: %d ms"
benchmark FSharpStyle "F# time: %d ms"
0
जो भी फ़ाइल का आकार, "एफ # शैली" संस्करण "सी # शैली" संस्करण के समय 75% के आसपास में पूरा करता है। मेरा सवाल है, वह क्यों है? मुझे अनिवार्य संस्करण में कोई स्पष्ट अक्षमता दिखाई नहीं दे रही है।
कुडोस @ डीआर_एसिक एक अच्छी तरह से तैयार प्रश्न के लिए। –