0

DataContainer オブジェクトに対して Dispose を呼び出す場合と呼び出さない場合のメモリと速度の違いを調べる簡単なテスト プログラムを作成します。

ここで私のテストプログラム:

static void Main(string[] args)
{
    Stopwatch stopwatch = new Stopwatch();
    stopwatch.Start();

    for (int i = 0; i < 5000; i++)
    {
        // I change the following call with Method1 and run it again
        var res = Method2();
        int count = res.Count;
    }

    stopwatch.Stop();
    Console.WriteLine(stopwatch.Elapsed);
    Console.WriteLine("Mem: " + System.Diagnostics.Process.GetCurrentProcess().PrivateMemorySize64.ToString("N"));
    Console.ReadKey();
}

private static IList Method1()
{
    using (var db = new Model.SampleEntities())
    {
        var result = db.People.Where(p => p.Name.StartsWith("a")).Take(1);
        return result.ToList();
    }
}

private static IList Method2()
{
    var db = new Model.SampleEntities();
    var result = db.People.Where(p => p.Name.StartsWith("a")).Take(1);
    return result.ToList();
}

どちらの方法でも結果は同じです。私の PC での結果は、約 27.22 秒で、約 37.7 MB のプライベート メモリ サイズでした。

違いがないのに、なぜ DataContainers の Dispose を呼び出す必要があるのでしょうか。

前もって感謝します。

4

1 に答える 1

0

Model.SampleEntities が正当な理由で IDisposable を返すことを想像してみてください。管理対象および/または管理対象外のリソースなどを適切にクリーンアップしている可能性があります。

于 2011-08-12T16:10:56.950 に答える