スタティックStopwatch
コンストラクタ内で、高解像度のパフォーマンスカウンタが存在するかどうかを基本的にチェックする次のコードを見ることができます。 MSDNで.NETストップウォッチに関する高解像度パフォーマンスカウンタとその存在についての説明?
static Stopwatch()
{
if (!SafeNativeMethods.QueryPerformanceFrequency(out Frequency))
{
IsHighResolution = false;
Frequency = 0x989680L;
tickFrequency = 1.0;
}
else
{
IsHighResolution = true;
tickFrequency = 10000000.0;
tickFrequency /= (double) Frequency;
}
}
は約QueryPerformanceFrequency
を言う:
は1つが
が存在する場合は、正確にそれをしないときは、しかし、かなり不明だ、高解像度のパフォーマンスカウンタの周波数を取得します。存在する?私はそれが現在のマシン上に存在すると思われますが、正確にはそうではありませんか?
存在しない場合、Stopwatch
はDateTime.UtcNow
プロパティの周りの単なるラッパーになるので面白いです。
まだ存在していない私はマシンを渡って来なかった。私が直面している実際的な主な問題は、ハードウェアのバグによって引き起こされる動作のバグです。たとえば、スレッドが別のコアでスケジュールされると、時間は前進/後退することができます。 – CodesInChaos
Windows Mobileでは、これを実装するためにプラットフォームビルダまではオプションです。 –
このクラスの "IsHighResolution"および "Frequency"プロパティはこの質問に答える必要があります。注:仮想マシン[VMWare ESXでは0の頻度を見つけましたが、バージョンは覚えていません]は表示されなくなりました。[マシンはw2k3からw2k8に移行されているため、VMWareまたはWindowsでもかまいません:-) ] br ++ mabra – mabra