以下是说明我的问题的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%。
有人可以解释为什么,以及我应该如何预见它吗?在此先感谢您的帮助。