我正在检查 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 倍)。