none
關於在PDA上,程式效能的測試 RRS feed

  • 問題

  •  

    嗨!!大家好~~想請問一下…如果我要在PDA上,測試

     

    一段程式的效能…我要如何來測試呢??我目前有試過用

     

    time1 = DateTime.Now;的方式來測…但是發現它的值都是不會變的…

     

    所以想問大家…有什麼好方法呢??

    2008年10月24日 上午 03:52

解答

  • 不知道 Windows Mobile 時間解析度是多少,可能要翻 MSDN 上得記載。

     

    Windows 9x 為 54 ms ,WinNT/2k/XP/2003/Vista/2008 為 10 ms 。

     

    表示你在 10/54 ms 內無論呼叫多少次 GetTickCount 或是 DateTime.Now ,這個結果都一樣。

     

    WinCE 2.0 以後有 QueryPerformanceFrequency / QueryPerformanceCounter ,可用來處理 10 ms 內的精度問題。

     

    不過我是認為效能評論還是應該用迴圈,而且你也不是算 CPU Time ,而是 real time,這樣做是不準的。

    2008年10月24日 上午 06:44

所有回覆

  • 值不會變可能是程式的執行速度太快,超過您用 Date 所能取得的精確度,

    一般來說可以加入回圈讓它跑個幾千幾萬次,然後再估算出運算時間。

     

    Pseudo codes

     

    time1 = DateTime

    for

    .... //

    loop

    elpTime = DateTime - time1

    2008年10月24日 上午 03:57
  • 謝謝你的回覆…如果我不打算加上回圈的話…

     

    我能不能用更低的精確度來得到效能評估…

     

    剛剛我有找到在pc上測試效能的方式…用tick

     

    …但是那個method…pda不支援…不知道是不是

     

    在pda上…另有名稱…

     

    using System.Diagnostics;

    Stopwatch sw=null;

    long ticks;

    sw = Stopwatch.StartNew();
    .

    .

    .

    ticks = sw.ElapsedTicks;
    textBox2.Text = ticks.ToString();

     

    2008年10月24日 上午 04:30
  • 不知道 Windows Mobile 時間解析度是多少,可能要翻 MSDN 上得記載。

     

    Windows 9x 為 54 ms ,WinNT/2k/XP/2003/Vista/2008 為 10 ms 。

     

    表示你在 10/54 ms 內無論呼叫多少次 GetTickCount 或是 DateTime.Now ,這個結果都一樣。

     

    WinCE 2.0 以後有 QueryPerformanceFrequency / QueryPerformanceCounter ,可用來處理 10 ms 內的精度問題。

     

    不過我是認為效能評論還是應該用迴圈,而且你也不是算 CPU Time ,而是 real time,這樣做是不準的。

    2008年10月24日 上午 06:44