Click here to Skip to main content
15,909,645 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
GeneralRe: VC++ and Empty Base Class Optimization problem/bug Pin
Kosta Cherry15-Mar-13 6:23
Kosta Cherry15-Mar-13 6:23 
GeneralRe: VC++ and Empty Base Class Optimization problem/bug Pin
Matthew Faithfull15-Mar-13 6:36
Matthew Faithfull15-Mar-13 6:36 
GeneralRe: VC++ and Empty Base Class Optimization problem/bug Pin
David Crow15-Mar-13 7:34
David Crow15-Mar-13 7:34 
GeneralRe: VC++ and Empty Base Class Optimization problem/bug Pin
Kosta Cherry15-Mar-13 8:45
Kosta Cherry15-Mar-13 8:45 
AnswerRe: VC++ and Empty Base Class Optimization problem/bug Pin
jschell15-Mar-13 8:56
jschell15-Mar-13 8:56 
QuestionHow Can I set Noise In Image ? Pin
002comp14-Mar-13 19:25
002comp14-Mar-13 19:25 
AnswerRe: How Can I set Noise In Image ? Pin
Marco Bertschi14-Mar-13 22:21
protectorMarco Bertschi14-Mar-13 22:21 
AnswerRe: How Can I set Noise In Image ? Pin
nv316-Mar-13 2:16
nv316-Mar-13 2:16 
QuestiontimeGetTime() is unreliable on my computer too, not monotonic! Pin
Robert Inventor14-Mar-13 18:04
Robert Inventor14-Mar-13 18:04 
AnswerMessage Closed Pin
14-Mar-13 18:15
Robert Inventor14-Mar-13 18:15 
GeneralMessage Closed Pin
14-Mar-13 18:20
Robert Inventor14-Mar-13 18:20 
GeneralMessage Closed Pin
14-Mar-13 18:53
Robert Inventor14-Mar-13 18:53 
GeneralMessage Closed Pin
14-Mar-13 19:19
Robert Inventor14-Mar-13 19:19 
AnswerRe: timeGetTime() is unreliable on my computer too, not monotonic! Pin
Robert Inventor19-Mar-13 7:31
Robert Inventor19-Mar-13 7:31 
QuestionQueryPerformanceCounter inaccurate timing even with use of SetThreadAffinityMask Pin
Robert Inventor14-Mar-13 15:50
Robert Inventor14-Mar-13 15:50 
AnswerRe: QueryPerformanceCounter inaccurate timing even with use of SetThreadAffinityMask Pin
Robert Inventor14-Mar-13 18:07
Robert Inventor14-Mar-13 18:07 
GeneralRe: QueryPerformanceCounter inaccurate timing even with use of SetThreadAffinityMask Pin
dusty_dex15-Mar-13 0:24
dusty_dex15-Mar-13 0:24 
GeneralRe: QueryPerformanceCounter inaccurate timing even with use of SetThreadAffinityMask Pin
Robert Inventor18-Mar-13 14:44
Robert Inventor18-Mar-13 14:44 
GeneralRe: QueryPerformanceCounter inaccurate timing even with use of SetThreadAffinityMask Pin
dusty_dex18-Mar-13 22:08
dusty_dex18-Mar-13 22:08 
AnswerRe: QueryPerformanceCounter inaccurate timing even with use of SetThreadAffinityMask Pin
Robert Inventor19-Mar-13 6:19
Robert Inventor19-Mar-13 6:19 
GeneralRe: QueryPerformanceCounter inaccurate timing even with use of SetThreadAffinityMask Pin
dusty_dex19-Mar-13 8:34
dusty_dex19-Mar-13 8:34 
GeneralRe: QueryPerformanceCounter inaccurate timing even with use of SetThreadAffinityMask Pin
Robert Inventor20-Mar-13 10:10
Robert Inventor20-Mar-13 10:10 
GeneralRe: QueryPerformanceCounter inaccurate timing even with use of SetThreadAffinityMask Pin
Robert Inventor20-Mar-13 11:12
Robert Inventor20-Mar-13 11:12 
Oh - still getting those reversed times

C++
static Spec_Thread double ddwt_was;
if(ddwt_was!=0)
if(ddwt<ddwt_was)
 ddwt=ddwt;
ddwt_was=ddwt;


C++
ddwt    22589372.894629
ddwt_was    22589372.895075


And this is fixed using:

C++
{
  DWORD threadAffMask=SetThreadAffinityMask(GetCurrentThread(),1);
  QueryPerformanceCounter(&HPT_PerformanceCount);
  SetThreadAffinityMask(GetCurrentThread(),threadAffMask );
}


So - seems - that code actually does work, you don't need to do it for the entire thread, just with every call as in the example code.

Sorry for the confusion.

So - seems - here anyway - that you can get time reversals if you let the time be measured on any core.

You avoid them if you access the interrupt timer via KUSER_SHARED_DATA though that doesn't have the same resolution on my computer as the QueryPerformanceCounter (only changes every 1ms - though it seems likely that it reports the exact time at the moment that it changes - so you could time an exact ms by just waiting in a busy loop for it to change).

But to get the clocks running at a constant rate you need to force the OS to use HPET. Doesn't seem to be anyway for a program to access HPET if Windows isn't using it as far as I can see anyway.

HPET is guaranteed, on Intel machines anyway, to be accurate to 0.05 % over 1 ms and

http://www.intel.com/content/dam/www/public/us/en/documents/technical-specifications/software-developers-hpet-spec-1-0a.pdf[^]
GeneralRe: QueryPerformanceCounter inaccurate timing even with use of SetThreadAffinityMask Pin
dusty_dex20-Mar-13 11:18
dusty_dex20-Mar-13 11:18 
GeneralRe: QueryPerformanceCounter inaccurate timing even with use of SetThreadAffinityMask Pin
Robert Inventor20-Mar-13 12:15
Robert Inventor20-Mar-13 12:15 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.