windowsのtimerについて
タイマーとしてstopwatchクラスが使えないかなと思ってみたけど環境によって挙動がおかしくなったので色々調べてみた。
高性能で経過時間を取得するなら
QueryPerformanceCounter,QueryPerformanceFrequencyらしいが、どうやらstopwatchは内部でこれを使うこともあるらしい。(使えなければ別のを使う)
MSDNにもあるけど
BIOS または HAL (Hardware Abstraction Layer) のバグにより、プロセッサごとにタイミング結果が異なる可能性があります。 スレッドのプロセッサ アフィニティを指定するには、ProcessThread.ProcessorAffinity メソッドを使用します。
とかあるので、ProcessThread.ProcessorAffinityを設定しないといけないのかもしれない。
HALをBIOSで有効にしないといけないとかあったり環境依存が色々めんどいのであんまり使いたくないな。
既にソースとか色々無いので大変だけど、おかしな動きが再現できればやってみる。
普通にmax 1ms程度であればマルチメディアタイマーが安定している。