-2

次のコードがあります

public class Test
{
  public static long Method1(Action a)
  {
        var s = Stopwatch.StartNew();
        a.Invoke();
        s.Stop();
        return s.Elapsed.TotalMilliseconds;
  }
}

別のクラスで私はこれをどのように呼ぼうとしていますか

            double elapsed = 0;

            for (int i = 0; i < 100000; i++)
            {


                elapsed+= (TestHelper.Timer(() => session.SaveTransaction(transaction)));
            }
            Debug.WriteLine(string.Format("avg execution time is {0} ms", elapsed/100000));

これはコンパイルされません。コールコードはどうすればよいですか?

4

1 に答える 1

3

2 つの問題:

  • 単一の呼び出しを測定しています。一般に、多くの呼び出しの時間を測定する必要があります。そうしないと、測定するには速すぎる (または少なくとも 1 ミリ秒未満) 可能性があります。
  • TimeSpan.Millisecondsおそらく実際に意味するときに使用していますTimeSpan.TotalMilliseconds。それ以外の場合は、1 秒を超えても、0 から 999 の間の値が報告されます。
于 2012-04-08T19:52:00.530 に答える