- Win32API質問箱 Build123©2ch.net
237 :185[]:2016/12/02(金) 10:43:58.72 ID:H1x5ETqP - 報告書は突っ返されたので、まだまだ続きそうです。
まず、大大大前提を確認したいのですが、 GetThreadTimes()で取得するCPU時間は スレッドがCPUをとっている時間で、 一つのスレッドが同時に複数のコアを占有することはないので、 (精度云々ではなく定義上は)スレッドのCPU時間は実時間以下である(以下のペースで進む)。 これは、大前提としてあってますよね?
|
- Win32API質問箱 Build123©2ch.net
242 :185[]:2016/12/02(金) 11:58:27.27 ID:H1x5ETqP - 10回やってみました。
つまり、>>226のコードでAとBだけでなく、AからJまでやってみました。 A timeGetTime()による時間:7msec カーネルモード時間:1092usec ユーザモード時間:14133usec B timeGetTime()による時間:7msec カーネルモード時間:249usec ユーザモード時間:343usec C timeGetTime()による時間:7msec カーネルモード時間:936usec ユーザモード時間:9141usec D timeGetTime()による時間:7msec カーネルモード時間:1372usec ユーザモード時間:4180usec E timeGetTime()による時間:7msec カーネルモード時間:561usec ユーザモード時間:6583usec F timeGetTime()による時間:7msec カーネルモード時間:717usec ユーザモード時間:7737usec G timeGetTime()による時間:7msec カーネルモード時間:468usec ユーザモード時間:4773usec
|
- Win32API質問箱 Build123©2ch.net
243 :185[]:2016/12/02(金) 11:58:51.26 ID:H1x5ETqP - H
timeGetTime()による時間:7msec カーネルモード時間:655usec ユーザモード時間:9672usec I timeGetTime()による時間:7msec カーネルモード時間:218usec ユーザモード時間:4149usec J timeGetTime()による時間:7msec カーネルモード時間:405usec ユーザモード時間:10795usec 全体(A〜J) timeGetTime()による時間:74msec カーネルモード時間:6645usec ユーザモード時間:71510usec
|
- Win32API質問箱 Build123©2ch.net
245 :185[]:2016/12/02(金) 13:02:57.14 ID:H1x5ETqP - 本件、私としては以下の結論に至りました。
○timeGetTime()は信頼できる。 ○GetThreadTime()は信用できない (ティック間切り上げ的な傾向あり。理由不明。)。 ○timeGetTime()を基準に>>212のような方法をとるほかない。 もう一度GetThreadTime()はどうしても信用ならず、 他に有用な代替手段もないため、 >>212の方法が限界である旨を報告することにします。 何人かの真剣に助言して下さった方々、 本当にありがとうございました。
|