I am writing a fast and fairly accurate game timer for use on Windows. Microsoft recommends using QueryPerformanceCounter() for high-resolution timing, and it works as expected, but I am looking for alternatives that yield less execution overhead.
I did some Googling and found mention of QueryInterruptTime(), and its counterpart QueryInterruptTimePrecise() which should be more precise but incurs greater overhead. Their documentation (here and here) describes that they get the system interrupt time count to the nearest system tick (or 100ns unit). QueryInterruptTime() is starting to look good as a timing candidate, but there is very little documentation of its advantages and of its quirks.
And then there are KeQueryInterruptTime() and KeQueryInterruptTimePrecise(), and I have no idea how they differ from their "non-Ke" siblings.
Can anyone describe QueryInterruptTime() and KeQueryInterruptTime(), their differences, pros and cons, and compare them with the more ubiquitous QueryPerformanceCounter() please?