我正在檢查F#列表和數組的性能。由於代碼:爲什麼在F#中處理數組比速度快
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))
我會懷疑都運行在十分相似的時間。事實上,數組速度超過10倍:數組需要28毫秒,而列表需要346毫秒! 這是爲什麼?我理解F#中的列表概念,並且例如將值附加到列表或獲取子序列是很耗時的,但在此代碼中,它只是遍歷所有元素,所以我認爲時序將非常可比。
在Visual Studio 2012的發佈模式下進行測試(在調試模式下數組速度快了5倍)。
我只是喜歡沒有任何(建設性)的評論得到反對票。 – rank1
如果您在測試中使用了Seq(無笑話),我會好奇你會看到什麼。由於Seq的懶惰應該幾乎是瞬間的。 –
這是正確的。 – rank1