Using rdtsc or the like for user-mode CPU timings is always wrong. Even if the CPU issues are handled perfectly, it's only ever right when the luck of the draw doesn't introduce any scheduling delays in the middle of what you're timing.