« FEZ Domino Tips (1) - プログラム実行を少し早くする方法 | トップページ | FEZ Domino Tips (3) - USB Host機能の使い方 »

FEZ Domino Tips (2) - .Net Micro Frameworkでms単位の時間計測を行う

.Netな人から見ると初歩的なネタですが、時間計測の方法について書きます。これは、サンプルコードを見てもらうのが一番早いですね。


サンプルコード

using System;
using Microsoft.SPOT;

namespace FezTimerTick
{
    public class Program
    {
        public static void Main()
        {
            long begin, end, elapsed;
            DateTime time_begin, time_end;
            int i;
            long sum = 0;

            // Method-1
            begin = DateTime.Now.Ticks;
            for (i = 0; i < 100000; i++)
                sum += (long)i;
            end = DateTime.Now.Ticks;
            elapsed = (end - begin) / TimeSpan.TicksPerMillisecond;
            Debug.Print("Elapsed time:" + elapsed.ToString());

            sum = 0;
            // Method-2
            time_begin = DateTime.Now;
            for (i = 0; i < 100000; i++)
                sum += (long)i;
            time_end = DateTime.Now;
            elapsed = (time_end - time_begin).Ticks / TimeSpan.TicksPerMillisecond;
            Debug.Print("Elapsed time:" + elapsed.ToString());
        }
    }
}

時間の取得にはDateTime構造体を使います。

  • 16行目にあるように、DateTime.Now.Ticksでその時点のCPU tick値が取得できます
  • DateTime.Now.Ticks / TimeSpan.TicksPerMillisecondでmsが取得できます。TimeSpan.TicksPerMillisecondの値は10000であるため、タイマーの粒度は100nsとなります
  • DateTime構造体のインスタンスは引き算(足し算も)ができるため、29行目のように経過時間を計算することもできます

« FEZ Domino Tips (1) - プログラム実行を少し早くする方法 | トップページ | FEZ Domino Tips (3) - USB Host機能の使い方 »

dotNet MF」カテゴリの記事

コメント

この記事へのコメントは終了しました。

2018年10月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
無料ブログはココログ