処理時間の計測

下準備

前エントリで使用したコードを用いて、実際にどの程度の処理時間を要するかを知るための方法を示します。計測結果を表示するために、フォーム上にラベルを作成しておいてください。

System.Diagnostics.Stopwatchクラス

            // 処理時間計測開始
            Stopwatch stopWatch = new Stopwatch();
            stopWatch.Start();

            // ...

            // 処理時間計測終了
            stopWatch.Stop();
            TimeSpan ts = stopWatch.Elapsed;
            string elapsedTime = (ts.Seconds * 1000 +
                ts.Milliseconds).ToString() + "ms";
            labelTAT.Text = elapsedTime;

System.Environment.TickCountプロパティ

            // 処理時間計測開始
            int tickBegin = Environment.TickCount;

            // ...

            // 処理時間計測終了
            int tickEnd = Environment.TickCount;
            double tick = tickEnd - tickBegin;
            labelTAT.Text = tick.ToString("#0.0000") + "ms";

QueryPerformanceCounter関数、QueryPerformanceFrequency関数

        [DllImport("kernel32.dll")]
        extern static short QueryPerformanceCounter(ref long x);

        [DllImport("kernel32.dll")]
        extern static short QueryPerformanceFrequency(ref long x);

        // ...

        private void buttonExecute_Click(object sender, EventArgs e)
        {
            // ...

            // 処理時間計測開始
            long cntStart = 0;
            QueryPerformanceCounter(ref cntStart);

            // ...

            // 処理時間計測終了
            long cntEnd = 0;
            QueryPerformanceCounter(ref cntEnd);
            long frq = 0;
            QueryPerformanceFrequency(ref frq);
            double time = ((double)cntEnd - (double)cntStart) / (double)frq;
            time *= 1000;
            labelTAT.Text = time.ToString("#0.0000") + "ms";