
I changed it to do m_frequency.QuadPart /= 1000000 in its constructor and add to elapsed by doing: m_elapsed += posix_time::microseconds(microseconds);
Sounds fair enough, I'll do the same. In terms of what to do when QueryPerformanceCounter leaps I would
probably use the GetTickCount value silently so the class just works (tm). I'd probably edit the file locally to assert in debug in that case just for personal curiosity.
I'll probably do some kind of macro enabling this behavior, like QPC_SET_AFFINITY which solves the multicore problem. There was one more problem with QueryPerformanceCounter on some laptops
including my old one. When the cpu lowered its clock speed to save battery power the frequency of the timer changed despite the documentation for QueryPerformanceFrequency explicitly saying the frequency cannot change while the system is running. I don't have the laptop anymore so I doubt we'll be able to make and test a fix. Hopefully this isn't common.
Unfortunately I don't see a fix for the speedsteping problem... I think we can only document it. About the next versions, I always do a message on the mailing list and I post it there http://www.unitedsoft.ch/boost/, sometimes I also upload it to the vault... Cheers for your insights. Btw as you seem to work on non-posix and non-windows system, can you tell me what timeing API there is on those platforms ? Would it make sense to add a "others" namespace where non-posix and non-win devices would be ? Philippe