none
Windowsタイマーの精度について RRS feed

  • 質問

  • Visual BasicのタイマーコントロールのWindowsの内部精度が知りたいです。
    ヘルプで確認したところ55msecとありましたが、CPUがPentiumⅢでOSがWindows Meの10年前のパソコンでは
    ストップウォッチで計った所55msecの10msecから55msecのタイマーの時間がほぼ一緒で、60msecから110msec
    もほぼ一緒の時間になり内部精度が55msecなのだと思ったのですが、2年前に導入した、
    CPUがcore2DuoでWindows XPは、ストップウォッチで計った所、割り込みの精度が違っていました、10msecから10msec毎に
    120msecまで計ったのですが、30msec、60msec、90msec、120msecが計算上とストップウォッチのタイムが近かったのですが、
    内部精度がCpuで変化するのかどうかと、変化した内部動作の精度を知っている方教えて頂けないでしょうか。

    よろしくお願いします。
    2009年12月17日 8:45

回答

  • MS-DOSやその上で動作するOSなどは55msで、NT系は10msだったはずです。
    ただ、精度が高くないので10msではなく約10msだと思った方がいいです。
    2009年12月18日 1:44
  • タイマーコントロールはおそらくシステムタイマの分解能による制限を受けています。

    システムタイマの分解能が何によって変化するかは私もわからないのですが、システムタイマの分解能はプログラムで取得可能です。

    timerコントロールについて
    http://social.msdn.microsoft.com/Forums/ja-JP/vbexpressja/thread/39c9b248-0794-435d-acd4-6c8b41ad426b

    2009年12月22日 5:31
  • システムタイマーの分解能は、MS-DOSの頃から変わらずインターバルタイマー(8254)の設定値で決定するはずです。
    ここに65535の値を設定した場合に55ms毎(1.1931817MHzの分周比)の割り込みが上がることとなります。
    例えば、ここに11931を設定すると10ms毎になります。
    これらの値は、OSが設定しているはずです。
    2009年12月24日 0:46

すべての返信

  • MS-DOSやその上で動作するOSなどは55msで、NT系は10msだったはずです。
    ただ、精度が高くないので10msではなく約10msだと思った方がいいです。
    2009年12月18日 1:44
  • タイマーコントロールはおそらくシステムタイマの分解能による制限を受けています。

    システムタイマの分解能が何によって変化するかは私もわからないのですが、システムタイマの分解能はプログラムで取得可能です。

    timerコントロールについて
    http://social.msdn.microsoft.com/Forums/ja-JP/vbexpressja/thread/39c9b248-0794-435d-acd4-6c8b41ad426b

    2009年12月22日 5:31
  • システムタイマーの分解能は、MS-DOSの頃から変わらずインターバルタイマー(8254)の設定値で決定するはずです。
    ここに65535の値を設定した場合に55ms毎(1.1931817MHzの分周比)の割り込みが上がることとなります。
    例えば、ここに11931を設定すると10ms毎になります。
    これらの値は、OSが設定しているはずです。
    2009年12月24日 0:46