Seq.iter的两次使用之间的性能差异很大

时间:2012-12-11 02:51:35

标签: f# iteration seq

以下是说明我的问题的MWE:

let f (n : int) : unit =
    {1 .. n}
    |> Seq.iter (fun s ->
        // Do something memory intensive, without retaining anything
        ()
        )
    ()

// First call
f 100

// Second call
{1 .. 10}
|> Seq.iter (fun s -> f 10)

即使两个呼叫的最终结果相同,第一个呼叫的执行速度也比第二个呼叫差得多。第一次调用中的内存使用率高达95%,系统速度降低到爬行状态。第二个的内存使用率从未超过50%。

有人可以解释原因,以及我应该如何预见它?在此先感谢您的帮助。

0 个答案:

没有答案