0

以下是说明我的问题的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%。

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

4

0 回答 0