Эмм ...
Как вы можете измерить время таким образом, когда вы не можете точно сказать, что вы не вызывали какой-либо блокирующий системный вызов в течение этого времени (например, потенциально Console.WriteLine)?
Чтобы иметь «рабочий тест», вы должны как минимум убедиться:
- НИЧЕГО еще не работает на вашем компьютере
- Приоритет процесса / потока имеет значение Высокий или что-то в этом роде
- Не вызывать системный вызов ... Выполнять только вычислительные задачи
- Установите привязку потоков к определенному ЦП, чтобы не переключаться между ЦП
Даже если вы сделаете это, ОС будет время от времени (например, 15 мс на настольной ОС Windows с двумя ядрами) вытеснять ваш поток ....
И вы все еще можете увидеть этот «скачок» в UTC Time-Stamp.
Простой переход из Userspace в Kernelspace (во время упреждающего / системного вызова) и обратно, без какой-либо существенной работы с ядром, потребует ~ 1000 циклов ЦП ...
Если ваш процесс переводится в состояние ожидания (путем вызова некоторого блокирующего ввода-вывода), это может быть ГЛАВНО гораздо хуже ...
Так что я действительно не прошёл твой "тест". ИМО это совершенно нормально.