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)

2 つの呼び出しの最終結果は同じですが、最初の呼び出しは 2 番目の呼び出しよりもパフォーマンスが大幅に低下します。最初の呼び出しでのメモリ使用率は 95% に達し、システムはクロールまで遅くなります。2 番目のメモリ使用量が 50% を超えることはありません。

誰かが理由を説明してもらえますか? よろしくお願いします。

4

0 に答える 0