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